diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 680a5de..0b09280 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,8 +1,12 @@ plugins { id("kotlin-application") - id("com.github.johnrengelman.shadow") version "6.1.0" + id("shadow") + id("native-image") + id("release") } +version = "0.0.1-SNAPSHOT" + dependencies { implementation("org.slf4j:slf4j-api:2.0.0-alpha1") runtimeOnly("org.slf4j:slf4j-simple:2.0.0-alpha1") @@ -16,27 +20,3 @@ application { mainClass.set("scaffold.ScaffoldKt") applicationName = "scaffold" } - -tasks.withType { - archiveBaseName.set("scaffold") - archiveClassifier.set("") - archiveVersion.set("") -} - -task("buildNative") { - dependsOn("installShadowDist") - - doLast { - exec { - commandLine( - "native-image", - "--no-fallback", - "-R:MaxNewSize=32", - "--language:js", - "-jar", - "${project.buildDir}/install/app-shadow/lib/scaffold.jar", - "${project.buildDir}/native/scaffold" - ) - } - } -} \ No newline at end of file diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index bf086c2..ac57beb 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -13,4 +13,5 @@ repositories { dependencies { implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.4.31")) implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31") + implementation("com.github.jengelman.gradle.plugins:shadow:6.1.0") } diff --git a/buildSrc/src/main/kotlin/native-image.gradle.kts b/buildSrc/src/main/kotlin/native-image.gradle.kts new file mode 100644 index 0000000..c25a5d0 --- /dev/null +++ b/buildSrc/src/main/kotlin/native-image.gradle.kts @@ -0,0 +1,21 @@ +task("buildNative") { + dependsOn("installShadowDist") + + outputs.file("${buildDir}/native/scaffold") + + doLast { + val graalvmHome = System.getenv("GRAALVM_HOME") ?: error("GRAALVM_HOME is not set") + + exec { + commandLine( + "${graalvmHome}/bin/native-image", + "--no-fallback", + "-R:MaxNewSize=32", + "--language:js", + "-jar", + "${buildDir}/install/app-shadow/lib/scaffold.jar", + "${buildDir}/native/scaffold" + ) + } + } +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/release.gradle.kts b/buildSrc/src/main/kotlin/release.gradle.kts new file mode 100644 index 0000000..456f7df --- /dev/null +++ b/buildSrc/src/main/kotlin/release.gradle.kts @@ -0,0 +1,7 @@ +tasks.register("release") { + dependsOn("buildNative") + + archiveFileName.set("scaffold-${archiveVersion.get()}-linux.zip") + destinationDirectory.set(file("$buildDir/release")) + from("$buildDir/native/scaffold") +} diff --git a/buildSrc/src/main/kotlin/shadow.gradle.kts b/buildSrc/src/main/kotlin/shadow.gradle.kts new file mode 100644 index 0000000..992e0e7 --- /dev/null +++ b/buildSrc/src/main/kotlin/shadow.gradle.kts @@ -0,0 +1,11 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +plugins { + id("com.github.johnrengelman.shadow") +} + +tasks.withType { + archiveBaseName.set("scaffold") + archiveClassifier.set("") + archiveVersion.set("") +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..961751b --- /dev/null +++ b/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx2048M -XX:MaxPermSize=512m -Dfile.encoding=UTF-8 +org.gradle.caching=true +org.gradle.parallel=true