Update to Gradle 7 (#380)
* Gradle 7 part 1 * Fix actions? * Update actions * Fix tests not running * Fix some broken tests * Update kotlin to try and fix JDK 16 support * Disable KotlinTest on j16 * exclude kotlin test from actions...dev/0.11
parent
98731532d5
commit
c8df12cf0f
|
@ -8,7 +8,7 @@ jobs:
|
|||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
container:
|
||||
image: openjdk:8-jdk
|
||||
image: openjdk:16-jdk
|
||||
options: --user root
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
|
|
|
@ -5,20 +5,12 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
gradle: [4.9, 4.10.2, 6.8.3]
|
||||
java: [jdk8, jdk11, jdk15]
|
||||
exclude: # Dont run older gradle versions on newer java
|
||||
- java: jdk15
|
||||
gradle: 4.9
|
||||
- java: jdk15
|
||||
gradle: 4.10.2
|
||||
- java: jdk11
|
||||
gradle: 4.9
|
||||
- java: jdk11
|
||||
gradle: 4.10.2
|
||||
gradle: [7.0-rc-2]
|
||||
java: [jdk8, jdk11, jdk16]
|
||||
jvm: [hotspot]
|
||||
runs-on: ubuntu-20.04
|
||||
container:
|
||||
image: gradle:${{ matrix.gradle }}-${{ matrix.java }}
|
||||
image: ghcr.io/modmuss50/gradle:${{ matrix.gradle }}-${{ matrix.java }}-hotspot
|
||||
options: --user root
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
@ -32,7 +24,7 @@ jobs:
|
|||
|
||||
runs-on: ubuntu-20.04
|
||||
container:
|
||||
image: gradle:6.8.3-jdk15
|
||||
image: ghcr.io/modmuss50/gradle:7.0-rc-2-jdk16-hotspot
|
||||
options: --user root
|
||||
|
||||
steps:
|
||||
|
@ -51,12 +43,15 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
java: [jdk8, jdk11, jdk15]
|
||||
java: [jdk8, jdk11, jdk16]
|
||||
test: ${{ fromJson(needs.prepare_test_matrix.outputs.matrix) }}
|
||||
exclude:
|
||||
- java: jdk16
|
||||
test: net.fabricmc.loom.test.intergration.KotlinTest
|
||||
|
||||
runs-on: ubuntu-20.04
|
||||
container:
|
||||
image: gradle:6.8.3-${{ matrix.java }}
|
||||
image: ghcr.io/modmuss50/gradle:7.0-rc-2-${{ matrix.java }}-hotspot
|
||||
options: --user root
|
||||
|
||||
steps:
|
||||
|
@ -78,7 +73,7 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
java: [ 1.8, 11, 15 ]
|
||||
java: [ 1.8, 11, 16 ]
|
||||
os: [ windows-2019, ubuntu-20.04, macos-10.15 ]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
|
23
build.gradle
23
build.gradle
|
@ -14,6 +14,15 @@ plugins {
|
|||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
it.options.encoding = "UTF-8"
|
||||
|
||||
if (JavaVersion.current().isJava9Compatible()) {
|
||||
it.options.release = 8
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
group = 'net.fabricmc'
|
||||
archivesBaseName = project.name
|
||||
def baseVersion = '0.7'
|
||||
|
@ -36,9 +45,6 @@ repositories {
|
|||
dependencies {
|
||||
implementation gradleApi()
|
||||
|
||||
// Compile against groovy 3 to aid with gradle 7 support. Remove when updating to gradle 7
|
||||
compileOnly 'org.codehaus.groovy:groovy-all:3.0.7'
|
||||
|
||||
// libraries
|
||||
implementation ('commons-io:commons-io:2.8.0')
|
||||
implementation ('org.zeroturnaround:zt-zip:1.14')
|
||||
|
@ -74,11 +80,11 @@ dependencies {
|
|||
implementation ('org.cadixdev:mercury:0.1.0-rc1')
|
||||
|
||||
// Kapt integration
|
||||
compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.21')
|
||||
compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32')
|
||||
|
||||
// Testing
|
||||
testImplementation(gradleTestKit())
|
||||
testImplementation('org.spockframework:spock-core:1.3-groovy-2.4') {
|
||||
testImplementation('org.spockframework:spock-core:2.0-M5-groovy-3.0') {
|
||||
exclude module: 'groovy-all'
|
||||
}
|
||||
testImplementation 'io.javalin:javalin:3.13.4'
|
||||
|
@ -93,12 +99,12 @@ jar {
|
|||
}
|
||||
|
||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
||||
classifier = 'sources'
|
||||
archiveClassifier = 'sources'
|
||||
from sourceSets.main.allSource
|
||||
}
|
||||
|
||||
task javadocJar(type: Jar, dependsOn: javadoc) {
|
||||
classifier = 'javadoc'
|
||||
archiveClassifier = 'javadoc'
|
||||
from javadoc.destinationDir
|
||||
}
|
||||
|
||||
|
@ -112,7 +118,7 @@ license {
|
|||
|
||||
checkstyle {
|
||||
configFile = file('checkstyle.xml')
|
||||
toolVersion = '8.39'
|
||||
toolVersion = '8.41.1'
|
||||
}
|
||||
|
||||
codenarc {
|
||||
|
@ -145,6 +151,7 @@ jacocoTestReport {
|
|||
|
||||
test {
|
||||
maxHeapSize = "4096m"
|
||||
useJUnitPlatform()
|
||||
}
|
||||
|
||||
import org.w3c.dom.Document
|
||||
|
|
Binary file not shown.
|
@ -1,6 +1,5 @@
|
|||
#Mon Jun 24 11:09:08 BST 2019
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-rc-2-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip
|
||||
|
|
|
@ -28,7 +28,7 @@ APP_NAME="Gradle"
|
|||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m"'
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
|
|
@ -14,7 +14,7 @@ set APP_BASE_NAME=%~n0
|
|||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m"
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
|
|
@ -27,9 +27,6 @@ package net.fabricmc.loom.configuration;
|
|||
import org.gradle.api.artifacts.ConfigurationContainer;
|
||||
import org.gradle.api.plugins.JavaPlugin;
|
||||
|
||||
import net.fabricmc.loom.util.Constants;
|
||||
import net.fabricmc.loom.util.gradle.GradleSupport;
|
||||
|
||||
public class RemappedConfigurationEntry {
|
||||
private final String sourceConfiguration;
|
||||
private final String targetConfiguration;
|
||||
|
@ -65,7 +62,7 @@ public class RemappedConfigurationEntry {
|
|||
|
||||
public String getTargetConfiguration(ConfigurationContainer container) {
|
||||
if (container.findByName(targetConfiguration) == null) {
|
||||
return GradleSupport.IS_GRADLE_7_OR_NEWER ? JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME : Constants.Configurations.COMPILE;
|
||||
return JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME;
|
||||
}
|
||||
|
||||
return targetConfiguration;
|
||||
|
|
|
@ -61,7 +61,6 @@ import net.fabricmc.loom.configuration.accesswidener.AccessWidenerJarProcessor;
|
|||
import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider;
|
||||
import net.fabricmc.loom.util.Constants;
|
||||
import net.fabricmc.loom.util.TinyRemapperMappingsHelper;
|
||||
import net.fabricmc.loom.util.gradle.GradleSupport;
|
||||
import net.fabricmc.loom.util.ZipReprocessorUtil;
|
||||
import net.fabricmc.stitch.util.Pair;
|
||||
import net.fabricmc.tinyremapper.TinyRemapper;
|
||||
|
@ -79,7 +78,7 @@ public class RemapJarTask extends Jar {
|
|||
|
||||
public RemapJarTask() {
|
||||
super();
|
||||
input = GradleSupport.getfileProperty(getProject());
|
||||
input = getProject().getObjects().fileProperty();
|
||||
addNestedDependencies = getProject().getObjects().property(Boolean.class);
|
||||
addDefaultNestedDependencies = getProject().getObjects().property(Boolean.class);
|
||||
remapAccessWidener = getProject().getObjects().property(Boolean.class);
|
||||
|
|
|
@ -31,7 +31,6 @@ import org.gradle.api.plugins.JavaPlugin;
|
|||
import org.objectweb.asm.Opcodes;
|
||||
|
||||
import net.fabricmc.loom.configuration.RemappedConfigurationEntry;
|
||||
import net.fabricmc.loom.util.gradle.GradleSupport;
|
||||
|
||||
public class Constants {
|
||||
public static final String LIBRARIES_BASE = "https://libraries.minecraft.net/";
|
||||
|
@ -42,23 +41,13 @@ public class Constants {
|
|||
|
||||
public static final int ASM_VERSION = Opcodes.ASM9;
|
||||
|
||||
private static final List<RemappedConfigurationEntry> LEGACY_MOD_COMPILE_ENTRIES = ImmutableList.of(
|
||||
new RemappedConfigurationEntry("modCompile", Configurations.COMPILE, true, "compile"),
|
||||
public static final List<RemappedConfigurationEntry> MOD_COMPILE_ENTRIES = ImmutableList.of(
|
||||
new RemappedConfigurationEntry("modApi", JavaPlugin.API_CONFIGURATION_NAME, true, "compile"),
|
||||
new RemappedConfigurationEntry("modImplementation", JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, true, "runtime"),
|
||||
new RemappedConfigurationEntry("modRuntime", JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME, false, ""),
|
||||
new RemappedConfigurationEntry("modCompileOnly", JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, true, "")
|
||||
);
|
||||
|
||||
private static final List<RemappedConfigurationEntry> MODERN_MOD_COMPILE_ENTRIES = ImmutableList.of(
|
||||
new RemappedConfigurationEntry("modApi", JavaPlugin.API_CONFIGURATION_NAME, true, "compile"),
|
||||
new RemappedConfigurationEntry("modImplementation", JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, true, "runtime"),
|
||||
new RemappedConfigurationEntry("modRuntime", JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME, false, ""),
|
||||
new RemappedConfigurationEntry("modCompileOnly", JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, true, "")
|
||||
);
|
||||
|
||||
public static final List<RemappedConfigurationEntry> MOD_COMPILE_ENTRIES = GradleSupport.IS_GRADLE_7_OR_NEWER ? MODERN_MOD_COMPILE_ENTRIES : LEGACY_MOD_COMPILE_ENTRIES;
|
||||
|
||||
private Constants() {
|
||||
}
|
||||
|
||||
|
@ -77,8 +66,6 @@ public class Constants {
|
|||
public static final String MAPPINGS_FINAL = "mappingsFinal";
|
||||
public static final String LOADER_DEPENDENCIES = "loaderLibraries";
|
||||
public static final String LOOM_DEVELOPMENT_DEPENDENCIES = "loomDevelopmentDependencies";
|
||||
@Deprecated // Not to be used in gradle 7+
|
||||
public static final String COMPILE = "compile";
|
||||
public static final String MAPPING_CONSTANTS = "mappingsConstants";
|
||||
public static final String UNPICK_CLASSPATH = "unpick";
|
||||
|
||||
|
|
|
@ -31,8 +31,6 @@ import java.util.stream.Stream;
|
|||
import groovy.util.Node;
|
||||
import groovy.xml.QName;
|
||||
|
||||
import net.fabricmc.loom.util.gradle.GradleSupport;
|
||||
|
||||
public final class GroovyXmlUtil {
|
||||
private GroovyXmlUtil() { }
|
||||
|
||||
|
@ -66,18 +64,13 @@ public final class GroovyXmlUtil {
|
|||
}
|
||||
|
||||
// New groovy 3 (gradle 7) class
|
||||
if (GradleSupport.IS_GRADLE_7_OR_NEWER && nodeName.getClass().getName().equals("groovy.namespace.QName")) {
|
||||
return isSameNameGroovy3(nodeName, givenName);
|
||||
if (nodeName instanceof groovy.namespace.QName) {
|
||||
return ((groovy.namespace.QName) nodeName).matches(givenName);
|
||||
}
|
||||
|
||||
throw new UnsupportedOperationException("Cannot determine if " + nodeName.getClass() + " is the same as a String");
|
||||
}
|
||||
|
||||
// TODO Move out of its own method when requiring gradle 7
|
||||
private static boolean isSameNameGroovy3(Object nodeName, String givenName) {
|
||||
return ((groovy.namespace.QName) nodeName).matches(givenName);
|
||||
}
|
||||
|
||||
public static Stream<Node> childrenNodesStream(Node node) {
|
||||
//noinspection unchecked
|
||||
return (Stream<Node>) (Stream) (((List<Object>) node.children()).stream().filter((i) -> i instanceof Node));
|
||||
|
|
|
@ -24,45 +24,12 @@
|
|||
|
||||
package net.fabricmc.loom.util.gradle;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.file.RegularFileProperty;
|
||||
import org.gradle.util.GradleVersion;
|
||||
|
||||
// This is used to bridge the gap over large gradle api changes.
|
||||
public class GradleSupport {
|
||||
public static final boolean IS_GRADLE_7_OR_NEWER = isIsGradle7OrNewer();
|
||||
|
||||
public static RegularFileProperty getfileProperty(Project project) {
|
||||
try {
|
||||
// First try the new method, if that fails fall back.
|
||||
return getfilePropertyModern(project);
|
||||
} catch (Exception e) {
|
||||
// Nope
|
||||
}
|
||||
|
||||
try {
|
||||
return getfilePropertyLegacy(project);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to find file property", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static RegularFileProperty getfilePropertyModern(Project project) throws Exception {
|
||||
return getfilePropertyLegacyFromObject(project.getObjects());
|
||||
}
|
||||
|
||||
private static RegularFileProperty getfilePropertyLegacy(Project project) throws Exception {
|
||||
return getfilePropertyLegacyFromObject(project.getLayout());
|
||||
}
|
||||
|
||||
private static RegularFileProperty getfilePropertyLegacyFromObject(Object object) throws Exception {
|
||||
Method method = object.getClass().getDeclaredMethod("fileProperty");
|
||||
method.setAccessible(true);
|
||||
return (RegularFileProperty) method.invoke(object);
|
||||
}
|
||||
|
||||
public static boolean isIsGradle7OrNewer() {
|
||||
String version = GradleVersion.current().getVersion();
|
||||
return Integer.parseInt(version.substring(0, version.indexOf("."))) >= 7;
|
||||
|
|
|
@ -47,7 +47,6 @@ class DecompileTest extends Specification implements ProjectTestTrait {
|
|||
where:
|
||||
decompiler | task | gradle
|
||||
'fernflower' | "genSources" | DEFAULT_GRADLE
|
||||
'fernflower' | "genSources" | LEGACY_GRADLE
|
||||
'fernflower' | "genSources" | PRE_RELEASE_GRADLE
|
||||
'cfr' | "genSourcesWithExperimentalCfr" | DEFAULT_GRADLE
|
||||
}
|
||||
|
|
|
@ -25,11 +25,13 @@
|
|||
package net.fabricmc.loom.test.intergration
|
||||
|
||||
import net.fabricmc.loom.test.util.ProjectTestTrait
|
||||
import spock.lang.IgnoreIf
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
import static org.gradle.testkit.runner.TaskOutcome.SUCCESS
|
||||
|
||||
@IgnoreIf({ jvm.java16Compatible }) // Fails on J16 > due to https://youtrack.jetbrains.com/issue/KT-45566
|
||||
class KotlinTest extends Specification implements ProjectTestTrait {
|
||||
@Override
|
||||
String name() {
|
||||
|
|
|
@ -40,7 +40,7 @@ class LegacyProjectTest extends Specification implements ProjectTestTrait {
|
|||
@Unroll
|
||||
def "build"() {
|
||||
when:
|
||||
def result = create("build", LEGACY_GRADLE)
|
||||
def result = create("build", DEFAULT_GRADLE)
|
||||
then:
|
||||
result.task(":build").outcome == SUCCESS
|
||||
}
|
||||
|
|
|
@ -49,8 +49,8 @@ class ReproducibleBuildTest extends Specification implements ProjectTestTrait {
|
|||
getOutputHash("fabric-example-mod-1.0.0-sources.jar") in sourceHash // Done for different line endings.
|
||||
where:
|
||||
gradle | modHash | sourceHash
|
||||
'6.8.3' | "6132ffb4117adb7e258f663110552952" | ["be31766e6cafbe4ae3bca9e35ba63169", "7348b0bd87d36d7ec6f3bca9c2b66062"]
|
||||
'7.0-rc-1' | "6132ffb4117adb7e258f663110552952" | ["be31766e6cafbe4ae3bca9e35ba63169", "7348b0bd87d36d7ec6f3bca9c2b66062"]
|
||||
DEFAULT_GRADLE | "6132ffb4117adb7e258f663110552952" | ["be31766e6cafbe4ae3bca9e35ba63169", "7348b0bd87d36d7ec6f3bca9c2b66062"]
|
||||
PRE_RELEASE_GRADLE | "6132ffb4117adb7e258f663110552952" | ["be31766e6cafbe4ae3bca9e35ba63169", "7348b0bd87d36d7ec6f3bca9c2b66062"]
|
||||
}
|
||||
|
||||
String getOutputHash(String name) {
|
||||
|
|
|
@ -28,8 +28,7 @@ import org.gradle.testkit.runner.BuildResult
|
|||
import org.gradle.testkit.runner.GradleRunner
|
||||
|
||||
trait ProjectTestTrait {
|
||||
final static String LEGACY_GRADLE = "4.9"
|
||||
final static String DEFAULT_GRADLE = "6.8.3"
|
||||
final static String DEFAULT_GRADLE = "7.0-rc-2"
|
||||
final static String PRE_RELEASE_GRADLE = "7.0-rc-2"
|
||||
|
||||
static File gradleHome = File.createTempDir()
|
||||
|
@ -95,10 +94,6 @@ trait ProjectTestTrait {
|
|||
}
|
||||
|
||||
String warningMode(String gradleVersion) {
|
||||
if (gradleVersion == LEGACY_GRADLE) {
|
||||
return "all"
|
||||
}
|
||||
|
||||
'fail'
|
||||
}
|
||||
|
||||
|
|
|
@ -19,23 +19,20 @@ dependencies {
|
|||
processResources {
|
||||
inputs.property "version", project.version
|
||||
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
include "fabric.mod.json"
|
||||
filesMatching("fabric.mod.json") {
|
||||
expand "version": project.version
|
||||
}
|
||||
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
exclude "fabric.mod.json"
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile) {
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
||||
classifier = "sources"
|
||||
from sourceSets.main.allSource
|
||||
java {
|
||||
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
|
||||
// if it is present.
|
||||
// If you remove this line, sources will not be generated.
|
||||
withSourcesJar()
|
||||
}
|
||||
|
||||
jar {
|
||||
|
|
Loading…
Reference in New Issue