Improve build scripts
All checks were successful
PRs & Pushes / build (push) Successful in 1m46s
PRs & Pushes / test (push) Successful in 1m44s
PRs & Pushes / build-apidoc (push) Successful in 1m44s

Thanks solonovamax! She/he/they helped improve the engine's build scripts and gave a lot of tips when working with Gradle.

Website: https://solonovamax.gay
Fedi: https://tech.lgbt/@solonovamax
GitHub: https://github.com/solonovamax
This commit is contained in:
JeremyStar™ 2024-12-24 23:56:42 +01:00
parent b133f7e3a7
commit e2e5040055
Signed by: JeremyStarTM
GPG key ID: E366BAEF67E4704D
3 changed files with 56 additions and 46 deletions

View file

@ -44,16 +44,6 @@ import java.nio.file.LinkOption
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// Buildscript
buildscript {
// Repositories
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
}
}
// Plugins
plugins {
id("java-library")
@ -113,8 +103,8 @@ allprojects {
// Java
java {
// Java version
sourceCompatibility = JavaVersion.valueOf("VERSION_${property("languageJava") as String}")
targetCompatibility = JavaVersion.valueOf("VERSION_${property("languageJava") as String}")
sourceCompatibility = JavaVersion.toVersion(property("languageJava") as String)
targetCompatibility = JavaVersion.toVersion(property("languageJava") as String)
if (!(hasProperty("java.skipToolchainSpecification") && property("java.skipToolchainSpecification") as String == "true"))
toolchain {
@ -130,7 +120,7 @@ allprojects {
verbose = true
// Set target metadata
jvmTarget = JvmTarget.valueOf("JVM_${property("languageJava") as String}")
jvmTarget = JvmTarget.fromTarget(property("languageJava") as String)
}
// Unit testing
@ -218,17 +208,17 @@ allprojects {
// -> Copy task
tasks.register("copyGitProperties") {
dependsOn(tasks.generateGitProperties)
inputs.file("${project.projectDir}/build/resources/main/git.properties")
doLast {
if (rootProject == project)
return@doLast
val target: File = file("${project.projectDir}/src/main/resources/sosengine-${project.name.replace(":", "-")}-git.properties")
val source: File = file("${project.projectDir}/build/resources/main/git.properties")
if (Files.exists(target.toPath(), LinkOption.NOFOLLOW_LINKS))
Files.delete(target.toPath())
Files.move(source.toPath(), target.toPath())
file(inputs.files.first())
.copyTo(
file("${project.projectDir}/src/main/resources/sosengine-${project.name.replace(":", "-")}-git.properties"),
overwrite = true
)
}
}
tasks.processResources {
@ -238,16 +228,17 @@ allprojects {
// Gradle properties
// -> Copy task
tasks.register("copyGradleProperties") {
inputs.file("${project(":").projectDir.path}/gradle.properties")
doLast {
if (rootProject == project)
return@doLast
val target: File = file("${project.projectDir}/src/main/resources/sosengine-${project.name.replace(":", "-")}-gradle.properties")
val source: File = file("${project(":").projectDir.path}/gradle.properties")
if (Files.exists(target.toPath(), LinkOption.NOFOLLOW_LINKS))
Files.delete(target.toPath())
Files.copy(source.toPath(), target.toPath())
file(inputs.files.first())
.copyTo(
file("${project.projectDir}/src/main/resources/sosengine-${project.name.replace(":", "-")}-gradle.properties"),
overwrite = true
)
}
}
tasks.processResources {

View file

@ -17,13 +17,19 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// Plugin management
pluginManagement {
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
}
}
// Project settings
rootProject.name = "sos!engine"
// Subprojects
// -> Root
include("")
// -> Base
include("base")

View file

@ -32,7 +32,7 @@ dependencies {
// Configure JAR
tasks.withType<Jar> {
manifest {
attributes.put("Main-Class", "de.staropensource.engine.testapp.Main")
attributes["Main-Class"] = "de.staropensource.engine.testapp.Main"
}
}
@ -41,24 +41,37 @@ application {
mainClass = "de.staropensource.engine.testapp.Main"
// JVM arguments
val jvmArgs: MutableList<String> = mutableListOf()
// -> JVM
jvmArgs.add("-XX:+UnlockDiagnosticVMOptions")
applicationDefaultJvmArgs = buildList {
// Unlock more VM options
add("-XX:+UnlockDiagnosticVMOptions")
add("-XX:+UnlockExperimentalVMOptions")
if (hasProperty("jvm.logGC") && property("jvm.logGC") as String == "true")
jvmArgs.add("-Xlog:gc")
if (hasProperty("jvm.logJITandAOT") && property("jvm.logJITandAOT") as String == "true") {
jvmArgs.add("-XX:+PrintCompilation")
jvmArgs.add("-XX:+PrintInlining")
}
if (hasProperty("jvm.garbageCollector"))
when (property("jvm.garbageCollector")) {
"epsilon" -> jvmArgs.add("-XX:+UseEpsilonGC")
"serial" -> jvmArgs.add("-XX:+UseSerialGC")
"g1" -> jvmArgs.add("-XX:+UseG1GC")
// VM settings
// -> Log garbage collection
if (
hasProperty("jvm.logGC")
&& property("jvm.logGC") as String == "true"
)
add("-Xlog:gc")
// -> Log JIT & AOT
if (
hasProperty("jvm.logJITandAOT")
&& property("jvm.logJITandAOT") as String == "true"
) {
add("-XX:+PrintCompilation")
add("-XX:+PrintInlining")
}
// -> Jansi
jvmArgs.add("-Djansi.mode=force")
applicationDefaultJvmArgs = jvmArgs
// -> Select garbage collector
if (hasProperty("jvm.garbageCollector"))
when (property("jvm.garbageCollector")) {
"epsilon" -> add("-XX:+UseEpsilonGC")
"serial" -> add("-XX:+UseSerialGC")
"g1" -> add("-XX:+UseG1GC")
}
// Jansi
add("-Djansi.mode=force")
}
}