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: diff --git a/build.gradle b/build.gradle index cbd89979..2c831609 100644 --- a/build.gradle +++ b/build.gradle @@ -144,6 +144,9 @@ subprojects { // for "api" in dependencies { } apply plugin: "java-library" + // Use 1.18.20+ for Java 16 compatability + lombok { version = "1.18.20" } + // Spotless Options spotless { encoding 'UTF-8' // all formats will be interpreted as UTF-8 @@ -166,9 +169,7 @@ subprojects { } repositories { - // Note: Maven Central is defined in allprojects - jcenter() - + // 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/" } @@ -187,9 +188,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" @@ -272,6 +270,10 @@ dependencies { // Root build: create uber sources from subproject sources task rootSources(type: Jar, dependsOn: subprojects.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 @@ -286,10 +288,34 @@ 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(subprojects.test) + dependsOn(subprojects.javadoc) + + dependsOn(subprojects.delombok) + dependsOn(subprojects.jacocoTestReport) + + dependsOn(aggregateJavadoc) + dependsOn(copySubprojectJars) + dependsOn(rootTestReport) + // ------------------------- + additionalSourceDirs.setFrom files(subprojects.sourceSets.main.allSource.srcDirs) sourceDirectories.setFrom files(subprojects.sourceSets.main.allSource.srcDirs) classDirectories.setFrom files(subprojects.sourceSets.main.output) @@ -300,14 +326,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 diff --git a/common/build.gradle b/common/build.gradle index 0d3b592e..0462850a 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -27,6 +27,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. +// 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"] + /* Build Info ---------- @@ -95,8 +101,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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8988d1ba..f371643e 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-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -compileJava.options.encoding=UTF-8 \ No newline at end of file