import java.util.concurrent.TimeUnit plugins { id("application") id("java") id("wrapper") id("com.github.johnrengelman.shadow").version("8.1.1") } version = "1.4.2-SNAPSHOT" final isSnapshot = project.version.endsWith("-SNAPSHOT") final SOURCE_ENCODING = "UTF-8" repositories { mavenCentral() if (isSnapshot) { maven { name("Sonatype snapshots") url("https://oss.sonatype.org/content/repositories/snapshots") } } } configurations.all { resolutionStrategy { cacheChangingModulesFor(0, TimeUnit.SECONDS) } } dependencies { implementation(group: "ch.qos.logback", name: "logback-classic", version: "1.3.7") implementation(group: "com.google.guava", name: "guava", version: "31.1-jre") implementation(group: "de.hhu.stups", name: "de.prob2.kernel", version: "4.13.0-SNAPSHOT") implementation(group: "io.github.spencerpark", name: "jupyter-jvm-basekernel", version: "2.3.0") implementation(group: "org.jetbrains", name: "annotations", version: "24.0.1") implementation(group: "se.sawano.java", name: "alphanumeric-comparator", version: "1.4.1") } java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } tasks.withType(JavaCompile) { options.encoding = SOURCE_ENCODING } def readCurrentGitCommit() { def proc = ["git", "rev-parse", "HEAD"].execute(null, project.projectDir) def exitCode = proc.waitFor() if (exitCode != 0) { throw new IllegalStateException("git rev-parse command exited with status code ${exitCode}:\n" + proc.err.readLines().join("\n")) } return proc.in.readLines()[0] } final currentGitCommit = readCurrentGitCommit() processResources { inputs.property("project.version", project.version) inputs.property("currentGitCommit", currentGitCommit) filesMatching("de/prob2/jupyter/build.properties") { expand(version: project.version, commit: readCurrentGitCommit()) } } application { mainClass = "de.prob2.jupyter.Main" } task installKernelSpec(type: Exec) { dependsOn = [shadowJar] executable = project.hasProperty("pythonCommand") ? project.pythonCommand : "python3" args = [shadowJar.archiveFile.get().asFile, "--jar-path=" + shadowJar.archiveFile.get().asFile, "install"] if (project.hasProperty("kernelspecUserInstall") && project.kernelspecUserInstall == "true") { args("--user") } }