From 45d81f93748b015e0b5b1d16e938cd42ed51cefa Mon Sep 17 00:00:00 2001 From: James Date: Mon, 29 Mar 2021 09:40:16 +0100 Subject: [PATCH 01/12] Upgade to gradle wrapper 7.0rc1 --- gradle/wrapper/gradle-wrapper.properties | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8988d1ba..e4bf89eb 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-rc-1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -compileJava.options.encoding=UTF-8 \ No newline at end of file From 263c3ec066052bbc5a458449f1549b604db374db Mon Sep 17 00:00:00 2001 From: James Date: Mon, 29 Mar 2021 09:42:04 +0100 Subject: [PATCH 02/12] Remove duplicate lombok dep; use edge version of lombok for java 16 --- build.gradle | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index ce2da2bc..57613257 100644 --- a/build.gradle +++ b/build.gradle @@ -70,6 +70,10 @@ subprojects { apply plugin: "io.freefair.lombok" apply plugin: "com.diffplug.spotless" + // Use the edge version of lombok for java 16 compatibility until a release is made + // see: https://github.com/rzwitserloot/lombok/issues/2681 + lombok { version = "edge-SNAPSHOT" } + // Spotless Options spotless { encoding 'UTF-8' // all formats will be interpreted as UTF-8 @@ -113,9 +117,6 @@ subprojects { } dependencies { - compileOnly "org.projectlombok:lombok:1.18.18" - annotationProcessor "org.projectlombok:lombok:1.18.18" - implementation "org.jetbrains:annotations:20.1.0" implementation "io.github.classgraph:classgraph:4.8.104" implementation "com.github.seancfoley:ipaddress:5.3.3" From 3f5124f01cdcdd07575d11d537cda68b6512be49 Mon Sep 17 00:00:00 2001 From: James Date: Mon, 29 Mar 2021 09:50:25 +0100 Subject: [PATCH 03/12] Add --add-opens for FieldUtil tests --- common/build.gradle | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/build.gradle b/common/build.gradle index 5e10565b..6682b899 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -31,6 +31,12 @@ dependencies { compileOnly "commons-lang:commons-lang:2.6" } +// Use --add-opens to ensure functionality of FieldUtil [java.lang.reflect.Field] (required in Java 16+) +// This will export java.lang.reflect to unnamed modules (eg. stickyapi) so that FieldUtil can still function. +// alternate: ["--illegal-access=warn"] (same functionality as pre Java 16) +// jep: https://openjdk.java.net/jeps/396 +test.jvmArgs = ["--add-opens=java.base/java.lang.reflect=ALL-UNNAMED"] + /* Build Info ---------- From 9ea6d1fe81bdb0b0171d4ccaeb9d39408b0d9e00 Mon Sep 17 00:00:00 2001 From: James Date: Mon, 29 Mar 2021 10:34:02 +0100 Subject: [PATCH 04/12] have processResources depend on copyMCFontExtractor --- common/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/build.gradle b/common/build.gradle index 6682b899..28a16176 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -105,8 +105,8 @@ task copyMCFontExtractor(type: Copy) { rename "mc-font-extractor-main-mojangles_width_data.json", "mojangles_width_data.json" } -// Run the font data copier before compiling the source code. -tasks.compileJava.dependsOn copyMCFontExtractor +// Run the font data copier +tasks.processResources.dependsOn copyMCFontExtractor // Common build: create a jar from the :common & :common:serverversion projects From 4f5913f9b4478bc9dc88ad09d973d26faa041fbe Mon Sep 17 00:00:00 2001 From: James Date: Mon, 29 Mar 2021 10:34:19 +0100 Subject: [PATCH 05/12] Add java 16 to build matrix --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76c5ea26..d3d15812 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - version: ["11", "14", "15"] + version: ["11", "14", "15", "16"] container: image: jcxldn/openjdk-alpine:${{matrix.version}}-jdk steps: From 9f794566868af87506058df2f0467a735b19f1f0 Mon Sep 17 00:00:00 2001 From: James Date: Mon, 29 Mar 2021 10:34:44 +0100 Subject: [PATCH 06/12] Experiment with fixing gradle 7 warnings --- build.gradle | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 57613257..0d3e517d 100644 --- a/build.gradle +++ b/build.gradle @@ -97,7 +97,7 @@ subprojects { repositories { // Note: Maven Central is defined in allprojects - jcenter() + //jcenter() maven { url "https://oss.sonatype.org/content/repositories/snapshots" } maven { url "https://papermc.io/repo/repository/maven-public/" } @@ -188,6 +188,10 @@ jar { from subprojects.sourceSets.main.output } // Root build: create uber sources from subproject sources task rootSources(type: Jar, dependsOn: classes) { + // Gradle 7 implicit dependency fix: depend on special common tasks + dependsOn(":common:copyMCFontExtractor") + dependsOn(":common:commonSources") + archiveClassifier.set("sources") // Use source code from all subprojects for sources. // TODO: Use certain subprojects only to allow for multiple jar outputs @@ -202,10 +206,39 @@ task rootTestReport(type: TestReport) { reportOn subprojects*.test } +// Create a libs/modules folder with submodule jars +task copySubprojectJars(type: Copy, dependsOn: subprojects.jar) { + // Gradle 7 implicit dependency fix: depend on special common tasks + dependsOn(":common:copyMCFontExtractor") + dependsOn(":common:commonSources") + + // Copy subproject jar and sources + from(subprojects.jar) + from(subprojects.sources) + into rootProject.file("build/libs/modules") +} + // Generate an additional jacoco report project-wide // src: https://github.com/gradle/gradle/issues/10708#issuecomment-566279825 task rootJacocoMergedReport(type: JacocoReport) { //dependsOn = subprojects.test + + // Gradle 7 implicit dependency fixes + dependsOn(allprojects.test) + dependsOn(allprojects.javadoc) + + dependsOn(subprojects.delombok) + dependsOn(subprojects.jacocoTestReport) + + dependsOn(aggregateJavadoc) + dependsOn(copySubprojectJars) + dependsOn(rootTestReport) + +// dependsOn(subprojects.sources) +// dependsOn(rootSources) +// dependsOn(subprojects.test) +// dependsOn(subprojects.compileTestJava) + additionalSourceDirs.setFrom files(subprojects.sourceSets.main.allSource.srcDirs) sourceDirectories.setFrom files(subprojects.sourceSets.main.allSource.srcDirs) classDirectories.setFrom files(subprojects.sourceSets.main.output) @@ -216,14 +249,6 @@ task rootJacocoMergedReport(type: JacocoReport) { } } -// Create a libs/modules folder with submodule jars -task copySubprojectJars(type: Copy, dependsOn: subprojects.jar) { - // Copy subproject jar and sources - from(subprojects.jar) - from(subprojects.sources) - into rootProject.file("build/libs/modules") -} - // Root build: run copySubprojectJars after build tasks.build.finalizedBy copySubprojectJars From 7262d059a8158d8fcd10354a1023d92d8dd04a8f Mon Sep 17 00:00:00 2001 From: James Date: Mon, 29 Mar 2021 10:40:19 +0100 Subject: [PATCH 07/12] Clean up comments --- build.gradle | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index 0d3e517d..73238b67 100644 --- a/build.gradle +++ b/build.gradle @@ -97,7 +97,6 @@ subprojects { repositories { // Note: Maven Central is defined in allprojects - //jcenter() maven { url "https://oss.sonatype.org/content/repositories/snapshots" } maven { url "https://papermc.io/repo/repository/maven-public/" } @@ -221,9 +220,8 @@ task copySubprojectJars(type: Copy, dependsOn: subprojects.jar) { // Generate an additional jacoco report project-wide // src: https://github.com/gradle/gradle/issues/10708#issuecomment-566279825 task rootJacocoMergedReport(type: JacocoReport) { - //dependsOn = subprojects.test - // Gradle 7 implicit dependency fixes + // ------------------------- dependsOn(allprojects.test) dependsOn(allprojects.javadoc) @@ -233,11 +231,7 @@ task rootJacocoMergedReport(type: JacocoReport) { dependsOn(aggregateJavadoc) dependsOn(copySubprojectJars) dependsOn(rootTestReport) - -// dependsOn(subprojects.sources) -// dependsOn(rootSources) -// dependsOn(subprojects.test) -// dependsOn(subprojects.compileTestJava) + // ------------------------- additionalSourceDirs.setFrom files(subprojects.sourceSets.main.allSource.srcDirs) sourceDirectories.setFrom files(subprojects.sourceSets.main.allSource.srcDirs) From 1667a1f553d7d06e6dd2bc17b87f7d317085dcbd Mon Sep 17 00:00:00 2001 From: James Date: Tue, 6 Apr 2021 16:42:39 +0100 Subject: [PATCH 08/12] Bump to gradle 7.0-rc-2 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e4bf89eb..76d741b8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-rc-1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-rc-2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From f92b37ac1e7ca8a4024ac6b07c3b8072113edeaa Mon Sep 17 00:00:00 2001 From: James Date: Tue, 6 Apr 2021 16:43:24 +0100 Subject: [PATCH 09/12] Switch from lombok edge to a new tagged release --- build.gradle | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 73238b67..32c5390d 100644 --- a/build.gradle +++ b/build.gradle @@ -70,9 +70,8 @@ subprojects { apply plugin: "io.freefair.lombok" apply plugin: "com.diffplug.spotless" - // Use the edge version of lombok for java 16 compatibility until a release is made - // see: https://github.com/rzwitserloot/lombok/issues/2681 - lombok { version = "edge-SNAPSHOT" } + // Use 1.18.20+ for Java 16 compatability + lombok { version = "1.18.20" } // Spotless Options spotless { From 10ebe6426dbf69ac3060473043eb24fd74b7baf5 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 6 Apr 2021 16:51:23 +0100 Subject: [PATCH 10/12] merge fix - change allprojects to subprojects as root project is no longer a java lib --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 483b60d7..83d9996b 100644 --- a/build.gradle +++ b/build.gradle @@ -306,8 +306,8 @@ task copySubprojectJars(type: Copy, dependsOn: subprojects.jar) { task rootJacocoMergedReport(type: JacocoReport) { // Gradle 7 implicit dependency fixes // ------------------------- - dependsOn(allprojects.test) - dependsOn(allprojects.javadoc) + dependsOn(subprojects.test) + dependsOn(subprojects.javadoc) dependsOn(subprojects.delombok) dependsOn(subprojects.jacocoTestReport) From 014708423713d53361a2cc38519224622c802417 Mon Sep 17 00:00:00 2001 From: James Date: Sat, 10 Apr 2021 09:02:31 +0100 Subject: [PATCH 11/12] Bump gradle wrapper to 7.0 (release) --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 76d741b8..f371643e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-rc-2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 0b6e6ad7eae04dad4b5054142e6a79c6ed0479c1 Mon Sep 17 00:00:00 2001 From: James Date: Sat, 10 Apr 2021 09:38:46 +0100 Subject: [PATCH 12/12] Adjust comments --- build.gradle | 3 +-- common/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 2af4fea1..2c831609 100644 --- a/build.gradle +++ b/build.gradle @@ -169,8 +169,7 @@ subprojects { } repositories { - // Note: Maven Central is defined in allprojects - + // Maven Central is defined in allprojects (for JaCoCo) maven { url "https://oss.sonatype.org/content/repositories/snapshots" } maven { url "https://papermc.io/repo/repository/maven-public/" } diff --git a/common/build.gradle b/common/build.gradle index cebe29e9..0462850a 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -29,8 +29,8 @@ dependencies { // Use --add-opens to ensure functionality of FieldUtil [java.lang.reflect.Field] (required in Java 16+) // This will export java.lang.reflect to unnamed modules (eg. stickyapi) so that FieldUtil can still function. -// alternate: ["--illegal-access=warn"] (same functionality as pre Java 16) -// jep: https://openjdk.java.net/jeps/396 +// Alternative: ["--illegal-access=warn"] (same functionality as pre Java 16) +// JEP: https://openjdk.java.net/jeps/396 test.jvmArgs = ["--add-opens=java.base/java.lang.reflect=ALL-UNNAMED"] /*