From 4c1e1bb7d5553d3032786d778f588b9c49adb1fd Mon Sep 17 00:00:00 2001 From: solonovamax Date: Wed, 28 Apr 2021 20:41:57 -0400 Subject: [PATCH 1/3] Improve gradle performance significantly Signed-off-by: solonovamax --- build.gradle.kts | 17 ++++++++++++ .../kotlin/com/dfsek/terra/CommonConfig.kt | 11 -------- .../com/dfsek/terra/CompilationConfig.kt | 20 +++++++++++--- .../com/dfsek/terra/DependencyConfig.kt | 16 ++++++++++-- .../com/dfsek/terra/DistributionConfig.kt | 26 ------------------- common/build.gradle.kts | 6 ++++- gradle.properties | 10 +++++++ settings.gradle.kts | 2 +- 8 files changed, 64 insertions(+), 44 deletions(-) create mode 100644 gradle.properties diff --git a/build.gradle.kts b/build.gradle.kts index ca6752c10..c9cdc4361 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,6 +5,23 @@ val versionObj = Version("5", "2", "0", true) allprojects { version = versionObj group = "com.dfsek.terra" + + tasks.withType().configureEach { + options.isFork = true + options.isIncremental = true + } + tasks.withType().configureEach { + useJUnitPlatform() + + maxHeapSize = "2G" + ignoreFailures = false + failFast = true + maxParallelForks = (Runtime.getRuntime().availableProcessors()).takeIf { it > 0 } ?: 1 + + reports.html.isEnabled = false + reports.junitXml.isEnabled = false + } + } /** * Version class that does version stuff. diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt index c06a71b2d..2a20247ec 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt @@ -16,17 +16,6 @@ fun Project.configureCommon() { configureDistribution() version = rootProject.version - - - - tasks.withType().configureEach { - useJUnitPlatform() - - maxHeapSize = "2G" - ignoreFailures = false - failFast = true - maxParallelForks = 12 - } } fun Project.getGitHash(): String { diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt index a6619cc1f..d94c7380f 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt @@ -3,11 +3,10 @@ package com.dfsek.terra import org.gradle.api.JavaVersion import org.gradle.api.Project import org.gradle.api.plugins.JavaPluginConvention +import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.compile.JavaCompile import org.gradle.api.tasks.javadoc.Javadoc -import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.filter -import org.gradle.kotlin.dsl.withType +import org.gradle.kotlin.dsl.* import org.gradle.language.jvm.tasks.ProcessResources fun Project.configureCompilation() { @@ -35,4 +34,19 @@ fun Project.configureCompilation() { tasks.withType { options.encoding = "UTF-8" } + + tasks.withType { + archiveBaseName.set("Terra-${archiveBaseName.get()}") + from("../LICENSE", "../../LICENSE") + } + + tasks.register("sourcesJar") { + archiveClassifier.set("sources") + } + + tasks.register("javadocJar") { + dependsOn("javadoc") + archiveClassifier.set("javadoc") + from(tasks.getByName("javadoc").destinationDir) + } } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt index 4bab053e4..748bc6e0a 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt @@ -2,12 +2,24 @@ package com.dfsek.terra import org.gradle.api.Project import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.invoke import org.gradle.kotlin.dsl.repositories fun Project.configureDependencies() { + configurations { + val shaded = create("shaded") + getByName("compile").extendsFrom(shaded) + val shadedApi = create("shadedApi") + shaded.extendsFrom(shadedApi) + getByName("api").extendsFrom(shadedApi) + val shadedImplementation = create("shadedImplementation") + shaded.extendsFrom(shadedImplementation) + getByName("implementation").extendsFrom(shadedImplementation) + } + repositories { - maven { url = uri("http://maven.enginehub.org/repo/") } + maven { url = uri("https://maven.enginehub.org/repo/") } maven { url = uri("https://repo.codemc.org/repository/maven-public") } maven { url = uri("https://papermc.io/repo/repository/maven-public/") } maven { url = uri("https://maven.fabricmc.net/") } @@ -19,6 +31,6 @@ fun Project.configureDependencies() { dependencies { "testImplementation"("org.junit.jupiter:junit-jupiter-api:5.7.0") "testImplementation"("org.junit.jupiter:junit-jupiter-engine:5.7.0") - "compileOnly"("org.jetbrains:annotations:20.1.0") + "api"("org.jetbrains:annotations:20.1.0") } } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt index c874d8820..ee81dc9b8 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DistributionConfig.kt @@ -14,17 +14,6 @@ fun Project.configureDistribution() { apply(plugin = "java-library") apply(plugin = "com.github.johnrengelman.shadow") - configurations { - val shaded = create("shaded") - getByName("compile").extendsFrom(shaded) - val shadedApi = create("shadedApi") - shaded.extendsFrom(shadedApi) - getByName("api").extendsFrom(shadedApi) - val shadedImplementation = create("shadedImplementation") - shaded.extendsFrom(shadedImplementation) - getByName("implementation").extendsFrom(shadedImplementation) - } - val downloadDefaultPacks = tasks.create("downloadDefaultPacks") { group = "terra" doFirst { @@ -38,21 +27,6 @@ fun Project.configureDistribution() { } tasks["processResources"].dependsOn(downloadDefaultPacks) - tasks.withType { - archiveBaseName.set("Terra-${archiveBaseName.get()}") - from("../LICENSE", "../../LICENSE") - } - - tasks.register("sourcesJar") { - archiveClassifier.set("sources") - } - - tasks.register("javadocJar") { - dependsOn("javadoc") - archiveClassifier.set("javadoc") - from(tasks.getByName("javadoc").destinationDir) - } - tasks.named("shadowJar") { // Tell shadow to download the packs dependsOn(downloadDefaultPacks) diff --git a/common/build.gradle.kts b/common/build.gradle.kts index ec58b60e9..a1a6fcd8b 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -1,11 +1,15 @@ import com.dfsek.terra.configureCommon +import com.dfsek.terra.configureCompilation +import com.dfsek.terra.configureDependencies plugins { `java-library` `maven-publish` + idea } -configureCommon() +configureCompilation() +configureDependencies() group = "com.dfsek.terra.common" diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 000000000..1fca82ba1 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,10 @@ +# Magic options for more perf +org.gradle.jvmargs=-Xmx2048M -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC +org.gradle.vfs.watch=true +kapt.use.worker.api=true +kapt.include.compile.classpath=false +org.gradle.parallel=true +org.gradle.caching=true +org.gradle.warning.mode=all +#org.gradle.logging.level=info +org.gradle.configureondemand=true diff --git a/settings.gradle.kts b/settings.gradle.kts index 303d70045..c5e7a4a77 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -16,7 +16,7 @@ include("platforms:sponge") pluginManagement { repositories { - maven(url = "http://maven.fabricmc.net") { + maven(url = "https://maven.fabricmc.net") { name = "Fabric" } gradlePluginPortal() From aa9e33af1dfbd47159fab75cb6eb556857ea0b26 Mon Sep 17 00:00:00 2001 From: solonovamax Date: Sat, 1 May 2021 16:45:52 -0400 Subject: [PATCH 2/3] Remove old and deprecated `compile` configuration + some minor refactoring Signed-off-by: solonovamax --- buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt | 4 ---- buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt | 3 +++ buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt | 4 +++- common/build.gradle.kts | 1 - 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt index 2a20247ec..3f10dc573 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CommonConfig.kt @@ -7,10 +7,6 @@ import org.gradle.kotlin.dsl.withType import java.io.ByteArrayOutputStream fun Project.configureCommon() { - apply(plugin = "java-library") - apply(plugin = "maven-publish") - apply(plugin = "idea") - configureDependencies() configureCompilation() configureDistribution() diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt index d94c7380f..1c50177dc 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt @@ -10,6 +10,9 @@ import org.gradle.kotlin.dsl.* import org.gradle.language.jvm.tasks.ProcessResources fun Project.configureCompilation() { + apply(plugin = "maven-publish") + apply(plugin = "idea") + configure { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt index 748bc6e0a..a73154b3f 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/DependencyConfig.kt @@ -1,15 +1,17 @@ package com.dfsek.terra import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.invoke import org.gradle.kotlin.dsl.repositories fun Project.configureDependencies() { + apply(plugin = "java") + apply(plugin = "java-library") configurations { val shaded = create("shaded") - getByName("compile").extendsFrom(shaded) val shadedApi = create("shadedApi") shaded.extendsFrom(shadedApi) getByName("api").extendsFrom(shadedApi) diff --git a/common/build.gradle.kts b/common/build.gradle.kts index a1a6fcd8b..e41d28497 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -1,4 +1,3 @@ -import com.dfsek.terra.configureCommon import com.dfsek.terra.configureCompilation import com.dfsek.terra.configureDependencies From 2d41dd8f082c2219ea6f0536f66b872cb6d08064 Mon Sep 17 00:00:00 2001 From: solonovamax Date: Sat, 1 May 2021 16:49:16 -0400 Subject: [PATCH 3/3] Don't use all cores processors for tests Signed-off-by: solonovamax --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index c9cdc4361..aadaac0e8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,7 +16,7 @@ allprojects { maxHeapSize = "2G" ignoreFailures = false failFast = true - maxParallelForks = (Runtime.getRuntime().availableProcessors()).takeIf { it > 0 } ?: 1 + maxParallelForks = (Runtime.getRuntime().availableProcessors() - 1).takeIf { it > 0 } ?: 1 reports.html.isEnabled = false reports.junitXml.isEnabled = false