From bf62f5b1d75532e10a1bc3c1826de0cad6be0bd7 Mon Sep 17 00:00:00 2001 From: Jonathing Date: Wed, 23 Apr 2025 16:18:38 -0400 Subject: [PATCH 01/10] Cleanup and enhance version catalog - Added global repositories - Removed repository declarations from individual projects - Added plugins to the version catalog - Projects now use the plugin aliases - Removed unused libraries - Cleaned up and standardized the syntax for the version catalog --- build.gradle | 15 ++---- eventbus-jmh/build.gradle | 12 ++--- eventbus-test-jar/build.gradle | 17 +++---- eventbus-test/build.gradle | 11 ++--- settings.gradle | 83 ++++++++++++++++++---------------- 5 files changed, 61 insertions(+), 77 deletions(-) diff --git a/build.gradle b/build.gradle index 10b07fd1..0c53996d 100644 --- a/build.gradle +++ b/build.gradle @@ -5,13 +5,13 @@ import net.ltgt.gradle.nullaway.NullAwayOptions plugins { id 'java-library' id 'maven-publish' - id 'org.gradlex.extra-java-module-info' version '1.11' - id 'net.minecraftforge.gradleutils' version '2.4.13' - id 'net.minecraftforge.licenser' version '1.1.1' + alias libs.plugins.modules + alias libs.plugins.gradleutils + alias libs.plugins.licenser // Enforce jSpecify annotations at compile-time - id 'net.ltgt.errorprone' version '4.1.0' - id 'net.ltgt.nullaway' version '2.2.0' + alias libs.plugins.errorprone + alias libs.plugins.nullaway } group = 'net.minecraftforge' @@ -24,11 +24,6 @@ java { withSourcesJar() } -repositories { - mavenCentral() - maven gradleutils.forgeMaven -} - dependencies { api libs.jspecify.annotations errorprone libs.errorprone.core diff --git a/eventbus-jmh/build.gradle b/eventbus-jmh/build.gradle index 09b5b449..7a3465fc 100644 --- a/eventbus-jmh/build.gradle +++ b/eventbus-jmh/build.gradle @@ -1,13 +1,8 @@ plugins { id 'java-library' - id 'org.gradlex.extra-java-module-info' - id 'net.minecraftforge.gradleutils' - id 'net.minecraftforge.licenser' -} - -repositories { - mavenCentral() - maven gradleutils.forgeMaven + alias libs.plugins.modules + alias libs.plugins.gradleutils + alias libs.plugins.licenser } java { @@ -33,7 +28,6 @@ dependencies { extraJavaModuleInfo { failOnMissingModuleInfo = false automaticModule('org.openjdk.jmh:jmh-core', 'jmh.core') - automaticModule('net.sf.jopt-simple:jopt-simple', 'jopt.simple') } tasks.register('aggregateJmh', AggregateJmh) { diff --git a/eventbus-test-jar/build.gradle b/eventbus-test-jar/build.gradle index 85b027ba..f3b9938e 100644 --- a/eventbus-test-jar/build.gradle +++ b/eventbus-test-jar/build.gradle @@ -1,14 +1,9 @@ plugins { id 'eclipse' id 'java-library' - id 'org.gradlex.extra-java-module-info' - id 'net.minecraftforge.gradleutils' - id 'net.minecraftforge.licenser' -} - -repositories { - mavenCentral() - maven gradleutils.forgeMaven + alias libs.plugins.modules + alias libs.plugins.gradleutils + alias libs.plugins.licenser } java { @@ -16,9 +11,9 @@ java { } dependencies { - implementation(rootProject) - implementation(libs.bundles.asm) - implementation(libs.unsafe) + implementation rootProject + implementation libs.bundles.asm + implementation libs.unsafe implementation libs.jmh.core } diff --git a/eventbus-test/build.gradle b/eventbus-test/build.gradle index 1fef6cf2..be8e545e 100644 --- a/eventbus-test/build.gradle +++ b/eventbus-test/build.gradle @@ -1,17 +1,12 @@ plugins { id 'eclipse' id 'java-library' - id 'net.minecraftforge.gradleutils' - id 'net.minecraftforge.licenser' - id 'org.gradlex.extra-java-module-info' + alias libs.plugins.gradleutils + alias libs.plugins.licenser + alias libs.plugins.modules id 'test-report-aggregation' } -repositories { - mavenCentral() - maven gradleutils.forgeMaven -} - java { toolchain.languageVersion = JavaLanguageVersion.of(21) } diff --git a/settings.gradle b/settings.gradle index 8aa86bbf..302034dd 100644 --- a/settings.gradle +++ b/settings.gradle @@ -10,46 +10,51 @@ plugins { } dependencyResolutionManagement { - versionCatalogs { - libs { - // https://mvnrepository.com/artifact/org.jspecify/jspecify - library('jspecify-annotations', 'org.jspecify', 'jspecify') version '1.0.0' - - // https://mvnrepository.com/artifact/com.google.errorprone/error_prone_core - library('errorprone-core', 'com.google.errorprone', 'error_prone_core') version '2.36.0' - - // https://mvnrepository.com/artifact/com.uber.nullaway/nullaway - library('nullaway', 'com.uber.nullaway', 'nullaway') version '0.12.4' - - // ModLauncher stack - library('modlauncher', 'net.minecraftforge:modlauncher:10.1.1') - library('securemodules', 'net.minecraftforge:securemodules:2.2.21') - library('unsafe', 'net.minecraftforge:unsafe:0.9.2') - - // Generics from lambdas - library('typetools', 'net.jodah:typetools:0.6.3') - - library('nulls', 'org.jetbrains:annotations:23.0.0') - library('jopt-simple', 'net.sf.jopt-simple:jopt-simple:5.0.4') - library('log4j-api', 'org.apache.logging.log4j:log4j-api:2.17.1') - - version('junit', '5.10.1') - library('junit-api', 'org.junit.jupiter', 'junit-jupiter-api').versionRef('junit') - library('junit-engine', 'org.junit.jupiter', 'junit-jupiter-engine').versionRef('junit') - library('junit-platform-launcher', 'org.junit.platform:junit-platform-launcher:1.10.1') - bundle('junit-runtime', ['junit-engine', 'junit-platform-launcher']) - - version('asm', '9.7.1') - library('asm', 'org.ow2.asm', 'asm' ).versionRef('asm') - library('asm-tree', 'org.ow2.asm', 'asm-tree' ).versionRef('asm') - library('asm-commons', 'org.ow2.asm', 'asm-commons').versionRef('asm') - bundle('asm', ['asm', 'asm-tree', 'asm-commons']) - - version('jmh', '1.37') - library('jmh-core', 'org.openjdk.jmh', 'jmh-core') versionRef 'jmh' - library('jmh-annotationProcessor', 'org.openjdk.jmh', 'jmh-generator-annprocess') versionRef 'jmh' - } + repositories { + // TODO [Gradle9][GradleUtils3] Replace with gradleutils.forgeMaven + maven { url = 'https://maven.minecraftforge.net/' } + mavenCentral() + } + + //@formatter:off + versionCatalogs.register('libs') { + plugin 'modules', 'org.gradlex.extra-java-module-info' version '1.11' + plugin 'gradleutils', 'net.minecraftforge.gradleutils' version '2.4.13' + plugin 'licenser', 'net.minecraftforge.licenser' version '1.2.0' + + plugin 'errorprone', 'net.ltgt.errorprone' version '4.1.0' + plugin 'nullaway', 'net.ltgt.nullaway' version '2.2.0' + + // https://mvnrepository.com/artifact/org.jspecify/jspecify + library 'jspecify-annotations', 'org.jspecify', 'jspecify' version '1.0.0' + + // https://mvnrepository.com/artifact/com.google.errorprone/error_prone_core + library 'errorprone-core', 'com.google.errorprone', 'error_prone_core' version '2.36.0' + + // https://mvnrepository.com/artifact/com.uber.nullaway/nullaway + library 'nullaway', 'com.uber.nullaway', 'nullaway' version '0.12.4' + + + /* The rest is for testing */ + library 'unsafe', 'net.minecraftforge:unsafe:0.9.2' + + version 'junit', '5.10.1' + library 'junit-api', 'org.junit.jupiter', 'junit-jupiter-api' versionRef 'junit' + library 'junit-engine', 'org.junit.jupiter', 'junit-jupiter-engine' versionRef 'junit' + library 'junit-platform-launcher', 'org.junit.platform', 'junit-platform-launcher' version '1.10.1' + bundle 'junit-runtime', ['junit-engine', 'junit-platform-launcher'] + + version 'asm', '9.7.1' + library 'asm', 'org.ow2.asm', 'asm' versionRef 'asm' + library 'asm-tree', 'org.ow2.asm', 'asm-tree' versionRef 'asm' + library 'asm-commons', 'org.ow2.asm', 'asm-commons' versionRef 'asm' + bundle 'asm', ['asm', 'asm-tree', 'asm-commons'] + + version 'jmh', '1.37' + library 'jmh-core', 'org.openjdk.jmh', 'jmh-core' versionRef 'jmh' + library 'jmh-annotationProcessor', 'org.openjdk.jmh', 'jmh-generator-annprocess' versionRef 'jmh' } + //@formatter:on } enableFeaturePreview 'TYPESAFE_PROJECT_ACCESSORS' From f35e6f0291d27a03834c9fda13f0fc98af52374a Mon Sep 17 00:00:00 2001 From: Jonathing Date: Wed, 23 Apr 2025 16:25:35 -0400 Subject: [PATCH 02/10] Cleanup usage of GradleUtils - PomUtils is now designed to be directly referenced - Declared common values like display name and vendor at top of the script - Replaced `gitversion.version` with `gitversion` - Using `licenses { license }` instead of `license` in MavenPOM - The base `license` method is not part of MavenPOM but rather DefaultMavenPOM, Gradle's own implementation of MavenPOM, which is internal and should not be referenced directly. --- build.gradle | 27 ++++++++++++++++----------- settings.gradle | 2 +- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index 0c53996d..886a1c96 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,3 @@ -import net.minecraftforge.gradleutils.PomUtils import net.ltgt.gradle.errorprone.ErrorProneOptions import net.ltgt.gradle.nullaway.NullAwayOptions @@ -14,8 +13,12 @@ plugins { alias libs.plugins.nullaway } +final projectDisplayName = 'EventBus' +final projectVendor = 'Forge Development LLC' +description = 'High performance Event Bus library' group = 'net.minecraftforge' -version = gitversion.version.tagOffset +version = gitversion.tagOffset + print "Version: $version" java { @@ -58,12 +61,12 @@ tasks.withType(JavaCompile).configureEach { tasks.named('jar', Jar) { manifest { attributes([ - 'Specification-Title': 'EventBus', - 'Specification-Version': gitversion.version.info.tag, - 'Specification-Vendor': 'Forge Development LLC', - 'Implementation-Title': 'EventBus', + 'Specification-Title' : projectDisplayName, + 'Specification-Version' : gitversion.info.tag, + 'Specification-Vendor' : projectVendor, + 'Implementation-Title' : projectDisplayName, 'Implementation-Version': project.version, - 'Implementation-Vendor': 'Forge Development LLC' + 'Implementation-Vendor' : projectVendor ]) } @@ -81,15 +84,17 @@ publishing { from components.java artifactId = 'eventbus' pom { - name = 'EventBus' - description = 'High performance Event Bus library' + name = projectDisplayName + description = project.description gradleutils.pom.gitHubDetails = pom - license PomUtils.Licenses.LGPLv2_1 + licenses { + license gradleutils.pom.licenses.LGPLv2_1 + } developers { - developer PomUtils.Developers.Paint_Ninja + developer gradleutils.pom.developers.Paint_Ninja } } } diff --git a/settings.gradle b/settings.gradle index 302034dd..11614303 100644 --- a/settings.gradle +++ b/settings.gradle @@ -19,7 +19,7 @@ dependencyResolutionManagement { //@formatter:off versionCatalogs.register('libs') { plugin 'modules', 'org.gradlex.extra-java-module-info' version '1.11' - plugin 'gradleutils', 'net.minecraftforge.gradleutils' version '2.4.13' + plugin 'gradleutils', 'net.minecraftforge.gradleutils' version '2.5.1' plugin 'licenser', 'net.minecraftforge.licenser' version '1.2.0' plugin 'errorprone', 'net.ltgt.errorprone' version '4.1.0' From c38e889defed212c577e929fd53d8804c1127271 Mon Sep 17 00:00:00 2001 From: Jonathing Date: Wed, 23 Apr 2025 16:26:43 -0400 Subject: [PATCH 03/10] Manually declare buildSrc project name EventBus 7 is currently using type-safe project accessors, and this mandates that each included build has its name properly declared. Since buildSrc is an included build, its name is now declared in its own `settings.gradle` file. --- buildSrc/settings.gradle | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 buildSrc/settings.gradle diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle new file mode 100644 index 00000000..aa1ae1be --- /dev/null +++ b/buildSrc/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'buildSrc' + From 147d752307f5b2dedf9815fb9093b48ae7bbd096 Mon Sep 17 00:00:00 2001 From: Jonathing Date: Wed, 23 Apr 2025 16:27:15 -0400 Subject: [PATCH 04/10] buildSrc version catalog As an included build, buildSrc does not share the EventBus project's version catalog. As such, I've created its own and am using it here. --- buildSrc/build.gradle | 7 +------ buildSrc/settings.gradle | 10 ++++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index c7e6b980..44bb43dd 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -2,13 +2,8 @@ plugins { id 'groovy' } -repositories { - mavenCentral() - maven { url = 'https://jitpack.io' } -} - java.toolchain.languageVersion = JavaLanguageVersion.of(21) dependencies { - implementation 'com.github.Steppschuh:Java-Markdown-Generator:1.3.2' + implementation libs.markdown.generator } diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle index aa1ae1be..fa956e78 100644 --- a/buildSrc/settings.gradle +++ b/buildSrc/settings.gradle @@ -1,2 +1,12 @@ rootProject.name = 'buildSrc' +dependencyResolutionManagement { + repositories { + mavenCentral() + maven { url = 'https://jitpack.io' } + } + + versionCatalogs.register('libs') { + library 'markdown-generator', 'com.github.Steppschuh', 'Java-Markdown-Generator' version '1.3.2' + } +} From 8090472595fe5ae212dd253c9a190f53edd022b8 Mon Sep 17 00:00:00 2001 From: Jonathing Date: Wed, 23 Apr 2025 16:31:01 -0400 Subject: [PATCH 05/10] Fixed deprecations and eager file resolutions in tests The test projects are creating custom tasks and are lazily configuring their properties in their buildscripts. However, they are using Project#file which eagerly resolves the file object before passing it into the task property. This can result to issues in future Gradle versions where practices involving eager resolution are discouraged. I've replaced these usages with invocations to `ProjectLayout`, which can be accessed directly in the script or by using the `project` object as I've done here. This allows defining a file or directory location without eager resolution, putting their values in a provider that can then be passed into the task inputs without issue. --- eventbus-jmh/build.gradle | 18 +++++++----------- eventbus-test/build.gradle | 11 +++++------ 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/eventbus-jmh/build.gradle b/eventbus-jmh/build.gradle index 7a3465fc..590e6af2 100644 --- a/eventbus-jmh/build.gradle +++ b/eventbus-jmh/build.gradle @@ -42,18 +42,16 @@ tasks.register('aggregateJmh', AggregateJmh) { tasks.register('archiveJfr', ArchiveJfr) { outputs.upToDateWhen { false } - input = file("build/jmh_profile_results/last_run/") - output = file('build/jmh_profile_results/archive/') + input = project.layout.buildDirectory.dir('jmh_profile_results/last_run') + output = project.layout.buildDirectory.dir('jmh_profile_results/archive') } tasks.register('jmh') ((Map>) ext.VALID_VMS).forEach { javaVendor, javaVersions -> for (Integer javaVersion in javaVersions) { - var output = file("build/jmh_results/jmh-${javaVendor}-${javaVersion}.json") - output.mkdirs() -// var outputJfr = file("build/jmh_profile_results/last_run/${javaVendor}-${javaVersion}/") -// outputJfr.mkdirs() + var output = project.layout.buildDirectory.file("jmh_results/jmh-${javaVendor}-${javaVersion}.json").map { it.asFile.absoluteFile.parentFile.mkdirs(); it } +// var outputJfr = project.layout.buildDirectory.dir("jmh_profile_results/last_run/${javaVendor}-${javaVersion}").map { it.asFile.mkdirs(); it } var task = tasks.register("jmh${javaVendor}${javaVersion}", JavaExec) { classpath = sourceSets.main.runtimeClasspath mainModule = 'net.minecraftforge.eventbus.jmh' @@ -88,11 +86,9 @@ tasks.register('jmh') args += project.property('bench') doFirst { -// outputJfr.deleteDir() - if (!output.parentFile.exists()) - output.parentFile.mkdirs() - if (output.exists()) - output.delete() + var file = output.get().asFile + if (file.exists()) + file.delete() } javaLauncher = javaToolchains.launcherFor { vendor = JvmVendorSpec."${javaVendor.toUpperCase(Locale.ROOT)}" as JvmVendorSpec diff --git a/eventbus-test/build.gradle b/eventbus-test/build.gradle index be8e545e..c718b24b 100644 --- a/eventbus-test/build.gradle +++ b/eventbus-test/build.gradle @@ -33,14 +33,13 @@ tasks.named('test', Test) { } tasks.register('testAll', AggregateTest) { - input = file('build/test-results/') - output = rootProject.file('test_results.html') + input = project.layout.buildDirectory.dir('test-results') + output = rootProject.layout.projectDirectory.file('test_results.html') } ((Map>) ext.VALID_VMS).forEach { javaVendor, javaVersions -> for (Integer javaVersion in javaVersions) { - var output = file("build/test-results/${javaVendor}-${javaVersion}/") - output.mkdirs() + var output = project.layout.buildDirectory.dir("test-results/${javaVendor}-${javaVersion}").map { it.asFile.mkdirs(); it } var task = tasks.register("test${javaVendor}${javaVersion}", Test) { useJUnitPlatform() javaLauncher = javaToolchains.launcherFor { @@ -48,8 +47,8 @@ tasks.register('testAll', AggregateTest) { languageVersion = JavaLanguageVersion.of(javaVersion) implementation = JvmImplementation.VENDOR_SPECIFIC } - reports.html.destination = file("build/test-reports/${javaVendor}-${javaVersion}/") - reports.junitXml.destination = output + reports.html.outputLocation = project.layout.buildDirectory.dir("test-reports/${javaVendor}-${javaVersion}") + reports.junitXml.outputLocation = output } tasks.named('testAll') { inputs.dir(output) From 162499649d694bd2613363ebeced5957a56a5f89 Mon Sep 17 00:00:00 2001 From: Jonathing Date: Wed, 23 Apr 2025 16:31:59 -0400 Subject: [PATCH 06/10] Manually define classpaths of custom test task In Gradle 9, Gradle is removing the default conventions for custom testing tasks created by consumer projects. I've declared the proper classpaths using `Test#classpath` and `Test#testClassesDirs` to silence the warning in the problems report and to ensure Gradle 9 compatibility. --- eventbus-test/build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eventbus-test/build.gradle b/eventbus-test/build.gradle index c718b24b..5b7d3d49 100644 --- a/eventbus-test/build.gradle +++ b/eventbus-test/build.gradle @@ -42,6 +42,8 @@ tasks.register('testAll', AggregateTest) { var output = project.layout.buildDirectory.dir("test-results/${javaVendor}-${javaVersion}").map { it.asFile.mkdirs(); it } var task = tasks.register("test${javaVendor}${javaVersion}", Test) { useJUnitPlatform() + classpath = configurations.runtimeClasspath + testClassesDirs = sourceSets.main.output.classesDirs javaLauncher = javaToolchains.launcherFor { vendor = JvmVendorSpec."${javaVendor.toUpperCase(Locale.ROOT)}" as JvmVendorSpec languageVersion = JavaLanguageVersion.of(javaVersion) From 921673683071614065de2d72163154e551701795 Mon Sep 17 00:00:00 2001 From: Jonathing Date: Wed, 23 Apr 2025 16:33:16 -0400 Subject: [PATCH 07/10] Use project name (eventbus) as artifact ID To simplify buildscripts and to prevent needing to change multiple values if need be, we've begun naming projects based on their artifact names and using that in the maven publications instead of manually writing out the desired artifact name (potentially multiple times). This required changing the project name from "EventBus" to "eventbus". --- build.gradle | 2 +- settings.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 886a1c96..e39b88eb 100644 --- a/build.gradle +++ b/build.gradle @@ -82,7 +82,7 @@ license { publishing { publications.register('mavenJava', MavenPublication) { from components.java - artifactId = 'eventbus' + artifactId = project.name pom { name = projectDisplayName description = project.description diff --git a/settings.gradle b/settings.gradle index 11614303..9104e58d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -59,7 +59,7 @@ dependencyResolutionManagement { enableFeaturePreview 'TYPESAFE_PROJECT_ACCESSORS' -rootProject.name = 'EventBus' +rootProject.name = 'eventbus' include 'eventbus-jmh' include 'eventbus-test' include 'eventbus-test-jar' From 489c5cf441e2ed59cca80ec6cd708b5543947c17 Mon Sep 17 00:00:00 2001 From: Jonathing Date: Wed, 23 Apr 2025 16:34:10 -0400 Subject: [PATCH 08/10] Final cleanup Minor nitpicks to improve consistency. We do not use any plugins that are hosted only on the Forge maven, so I have removed it from the plugin management repositories. --- build.gradle | 24 +++++++++++----------- buildSrc/src/main/groovy/ArchiveJfr.groovy | 5 ----- eventbus-jmh/build.gradle | 2 +- eventbus-test-jar/build.gradle | 2 +- eventbus-test/build.gradle | 2 +- settings.gradle | 9 +------- 6 files changed, 16 insertions(+), 28 deletions(-) diff --git a/build.gradle b/build.gradle index e39b88eb..9c5d203f 100644 --- a/build.gradle +++ b/build.gradle @@ -54,7 +54,7 @@ tasks.withType(JavaCompile).configureEach { } // Enforce the ErrorProne checks we care about - errorProne.error("FieldCanBeFinal", "MethodCanBeStatic", "LambdaFunctionalInterface") + errorProne.error 'FieldCanBeFinal', 'MethodCanBeStatic', 'LambdaFunctionalInterface' } } @@ -75,7 +75,7 @@ tasks.named('jar', Jar) { } license { - header = file("LICENSE-header.txt") + header = file('LICENSE-header.txt') newLine = false } @@ -105,17 +105,17 @@ publishing { } allprojects { - ext.VALID_VMS = [ - 'Adoptium': [21], - 'Amazon': [21], - 'Azul': (21), - 'BellSoft': (21), - 'Graal_VM': [21], - 'Microsoft': [21], - 'Oracle': (21), - ] - // Tests are expensive to run all variants, so only run if asked to if (!project.hasProperty('bulk_tests')) ext.VALID_VMS = ['Adoptium': [21]] + else + ext.VALID_VMS = [ + 'Adoptium': [21], + 'Amazon': [21], + 'Azul': (21), + 'BellSoft': (21), + 'Graal_VM': [21], + 'Microsoft': [21], + 'Oracle': (21), + ] } diff --git a/buildSrc/src/main/groovy/ArchiveJfr.groovy b/buildSrc/src/main/groovy/ArchiveJfr.groovy index b78355b7..0839e49d 100644 --- a/buildSrc/src/main/groovy/ArchiveJfr.groovy +++ b/buildSrc/src/main/groovy/ArchiveJfr.groovy @@ -1,15 +1,10 @@ -import groovy.xml.DOMBuilder -import groovy.xml.dom.DOMCategory import org.gradle.api.DefaultTask import org.gradle.api.file.DirectoryProperty -import org.gradle.api.file.RegularFileProperty import org.gradle.api.tasks.InputDirectory import org.gradle.api.tasks.OutputDirectory -import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction import java.nio.file.Files -import java.nio.file.StandardCopyOption abstract class ArchiveJfr extends DefaultTask { @InputDirectory diff --git a/eventbus-jmh/build.gradle b/eventbus-jmh/build.gradle index 590e6af2..d265074e 100644 --- a/eventbus-jmh/build.gradle +++ b/eventbus-jmh/build.gradle @@ -10,7 +10,7 @@ java { } license { - header = rootProject.file("LICENSE-header.txt") + header = rootProject.file('LICENSE-header.txt') newLine = false } diff --git a/eventbus-test-jar/build.gradle b/eventbus-test-jar/build.gradle index f3b9938e..aad54d1e 100644 --- a/eventbus-test-jar/build.gradle +++ b/eventbus-test-jar/build.gradle @@ -24,7 +24,7 @@ extraJavaModuleInfo { } license { - header = rootProject.file("LICENSE-header.txt") + header = rootProject.file('LICENSE-header.txt') newLine = false } diff --git a/eventbus-test/build.gradle b/eventbus-test/build.gradle index 5b7d3d49..3a694746 100644 --- a/eventbus-test/build.gradle +++ b/eventbus-test/build.gradle @@ -12,7 +12,7 @@ java { } license { - header = rootProject.file("LICENSE-header.txt") + header = rootProject.file('LICENSE-header.txt') newLine = false } diff --git a/settings.gradle b/settings.gradle index 9104e58d..1c123869 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,12 +1,5 @@ -pluginManagement { - repositories { - gradlePluginPortal() - maven { url = 'https://maven.minecraftforge.net/' } - } -} - plugins { - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0' + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.10.0' } dependencyResolutionManagement { From 400fa27423132649411eeef23b374c76891b83a1 Mon Sep 17 00:00:00 2001 From: Jonathing Date: Fri, 9 May 2025 18:22:51 -0400 Subject: [PATCH 09/10] Fix test tasks failing --- eventbus-jmh/build.gradle | 18 +++++++++++------- eventbus-test/build.gradle | 11 ++++++----- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/eventbus-jmh/build.gradle b/eventbus-jmh/build.gradle index d265074e..1c7b2c9f 100644 --- a/eventbus-jmh/build.gradle +++ b/eventbus-jmh/build.gradle @@ -42,16 +42,18 @@ tasks.register('aggregateJmh', AggregateJmh) { tasks.register('archiveJfr', ArchiveJfr) { outputs.upToDateWhen { false } - input = project.layout.buildDirectory.dir('jmh_profile_results/last_run') - output = project.layout.buildDirectory.dir('jmh_profile_results/archive') + input = file("build/jmh_profile_results/last_run/") + output = file('build/jmh_profile_results/archive/') } tasks.register('jmh') ((Map>) ext.VALID_VMS).forEach { javaVendor, javaVersions -> for (Integer javaVersion in javaVersions) { - var output = project.layout.buildDirectory.file("jmh_results/jmh-${javaVendor}-${javaVersion}.json").map { it.asFile.absoluteFile.parentFile.mkdirs(); it } -// var outputJfr = project.layout.buildDirectory.dir("jmh_profile_results/last_run/${javaVendor}-${javaVersion}").map { it.asFile.mkdirs(); it } + var output = file("build/jmh_results/jmh-${javaVendor}-${javaVersion}.json") + output.mkdirs() +// var outputJfr = file("build/jmh_profile_results/last_run/${javaVendor}-${javaVersion}/") +// outputJfr.mkdirs() var task = tasks.register("jmh${javaVendor}${javaVersion}", JavaExec) { classpath = sourceSets.main.runtimeClasspath mainModule = 'net.minecraftforge.eventbus.jmh' @@ -86,9 +88,11 @@ tasks.register('jmh') args += project.property('bench') doFirst { - var file = output.get().asFile - if (file.exists()) - file.delete() +// outputJfr.deleteDir() + if (!output.parentFile.exists()) + output.parentFile.mkdirs() + if (output.exists()) + output.delete() } javaLauncher = javaToolchains.launcherFor { vendor = JvmVendorSpec."${javaVendor.toUpperCase(Locale.ROOT)}" as JvmVendorSpec diff --git a/eventbus-test/build.gradle b/eventbus-test/build.gradle index 3a694746..db04ebca 100644 --- a/eventbus-test/build.gradle +++ b/eventbus-test/build.gradle @@ -33,13 +33,14 @@ tasks.named('test', Test) { } tasks.register('testAll', AggregateTest) { - input = project.layout.buildDirectory.dir('test-results') - output = rootProject.layout.projectDirectory.file('test_results.html') + input = file('build/test-results/') + output = rootProject.file('test_results.html') } ((Map>) ext.VALID_VMS).forEach { javaVendor, javaVersions -> for (Integer javaVersion in javaVersions) { - var output = project.layout.buildDirectory.dir("test-results/${javaVendor}-${javaVersion}").map { it.asFile.mkdirs(); it } + var output = file("build/test-results/${javaVendor}-${javaVersion}/") + output.mkdirs() var task = tasks.register("test${javaVendor}${javaVersion}", Test) { useJUnitPlatform() classpath = configurations.runtimeClasspath @@ -49,8 +50,8 @@ tasks.register('testAll', AggregateTest) { languageVersion = JavaLanguageVersion.of(javaVersion) implementation = JvmImplementation.VENDOR_SPECIFIC } - reports.html.outputLocation = project.layout.buildDirectory.dir("test-reports/${javaVendor}-${javaVersion}") - reports.junitXml.outputLocation = output + reports.html.outputLocation.fileValue file("build/test-reports/${javaVendor}-${javaVersion}/") + reports.junitXml.outputLocation.fileValue output } tasks.named('testAll') { inputs.dir(output) From 40baa1233502dd122998760cd8bf27de02ec86d5 Mon Sep 17 00:00:00 2001 From: Jonathing Date: Fri, 9 May 2025 18:23:16 -0400 Subject: [PATCH 10/10] Address other minor comments --- build.gradle | 8 ++++---- settings.gradle | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 9c5d203f..38116a86 100644 --- a/build.gradle +++ b/build.gradle @@ -82,7 +82,7 @@ license { publishing { publications.register('mavenJava', MavenPublication) { from components.java - artifactId = project.name + artifactId = 'eventbus' pom { name = projectDisplayName description = project.description @@ -112,10 +112,10 @@ allprojects { ext.VALID_VMS = [ 'Adoptium': [21], 'Amazon': [21], - 'Azul': (21), - 'BellSoft': (21), + 'Azul': [21], + 'BellSoft': [21], 'Graal_VM': [21], 'Microsoft': [21], - 'Oracle': (21), + 'Oracle': [21], ] } diff --git a/settings.gradle b/settings.gradle index 1c123869..00aefa3b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -32,8 +32,8 @@ dependencyResolutionManagement { library 'unsafe', 'net.minecraftforge:unsafe:0.9.2' version 'junit', '5.10.1' - library 'junit-api', 'org.junit.jupiter', 'junit-jupiter-api' versionRef 'junit' - library 'junit-engine', 'org.junit.jupiter', 'junit-jupiter-engine' versionRef 'junit' + library 'junit-api', 'org.junit.jupiter', 'junit-jupiter-api' versionRef 'junit' + library 'junit-engine', 'org.junit.jupiter', 'junit-jupiter-engine' versionRef 'junit' library 'junit-platform-launcher', 'org.junit.platform', 'junit-platform-launcher' version '1.10.1' bundle 'junit-runtime', ['junit-engine', 'junit-platform-launcher'] @@ -52,7 +52,7 @@ dependencyResolutionManagement { enableFeaturePreview 'TYPESAFE_PROJECT_ACCESSORS' -rootProject.name = 'eventbus' +rootProject.name = 'EventBus' include 'eventbus-jmh' include 'eventbus-test' include 'eventbus-test-jar'