diff options
Diffstat (limited to 'build.gradle')
-rw-r--r-- | build.gradle | 161 |
1 files changed, 101 insertions, 60 deletions
diff --git a/build.gradle b/build.gradle index 8ed0627a..2cc27e47 100644 --- a/build.gradle +++ b/build.gradle @@ -9,6 +9,8 @@ plugins { id 'jacoco' id 'codenarc' id "com.diffplug.spotless" version "5.14.1" + id 'net.kyori.blossom' version '1.3.0' + id 'me.shedaniel.java-version-bridge' version '1.0-SNAPSHOT' } sourceCompatibility = 16 @@ -19,24 +21,33 @@ tasks.withType(JavaCompile).configureEach { it.options.release = 16 } - -group = 'net.fabricmc' +group = "dev.architectury" archivesBaseName = project.name -def baseVersion = '0.10' +def baseVersion = '0.10.0' +def runNumber = System.getenv("GITHUB_RUN_NUMBER") ?: "9999" + +def isSnapshot = System.getenv("PR_NUM") != null + +def buildNum = "release #$runNumber" -def ENV = System.getenv() -if (ENV.BUILD_NUMBER) { - version = baseVersion + '.' + ENV.BUILD_NUMBER +if (!isSnapshot) { + version = baseVersion + "." + runNumber } else { - version = baseVersion + '.local' + version = baseVersion + "-PR." + System.getenv("PR_NUM") + "." + runNumber } +logger.lifecycle(":building plugin v${version}") + repositories { + mavenCentral() + maven { url "https://maven.fabricmc.net/" } + maven { url "https://maven.architectury.dev/" } maven { - name = 'Fabric' - url = 'https://maven.fabricmc.net/' + url "https://maven.minecraftforge.net/" + content { + excludeGroupByRegex "org\\.eclipse\\.?.*" + } } - mavenCentral() mavenLocal() } @@ -51,7 +62,8 @@ configurations { configurations.all { resolutionStrategy { - failOnNonReproducibleResolution() + // I am sorry, for now + // failOnNonReproducibleResolution() } } @@ -70,31 +82,43 @@ dependencies { implementation ('org.ow2.asm:asm-commons:9.2') implementation ('org.ow2.asm:asm-tree:9.2') implementation ('org.ow2.asm:asm-util:9.2') + implementation ('me.tongfei:progressbar:0.9.0') // game handling utils implementation ('net.fabricmc:stitch:0.6.1') { + exclude module: 'mercury' exclude module: 'enigma' } // tinyfile management - implementation ('net.fabricmc:tiny-remapper:0.7.0') + implementation ('dev.architectury:tiny-remapper:1.5.16') implementation 'net.fabricmc:access-widener:2.1.0' implementation 'net.fabricmc:mapping-io:0.2.1' implementation ('net.fabricmc:lorenz-tiny:4.0.2') { transitive = false } + implementation "dev.architectury:refmap-remapper:1.0.5" // decompilers implementation ('net.fabricmc:fabric-fernflower:1.4.1') implementation ('net.fabricmc:cfr:0.0.9') // source code remapping - implementation ('net.fabricmc:mercury:0.2.4') + implementation ('dev.architectury:mercury:0.1.1.11') + // Kapt integration compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21') + // Forge patches + implementation ('net.minecraftforge:installertools:1.2.0') + implementation ('net.minecraftforge:binarypatcher:1.1.1') + implementation ('org.cadixdev:lorenz:0.5.3') + implementation ('org.cadixdev:lorenz-asm:0.5.3') + implementation ('de.oceanlabs.mcp:mcinjector:3.8.0') + implementation ('com.opencsv:opencsv:5.4') + // Testing testImplementation(gradleTestKit()) testImplementation('org.spockframework:spock-core:2.0-groovy-3.0') { @@ -106,12 +130,31 @@ dependencies { compileOnly 'org.jetbrains:annotations:22.0.0' } +blossom { + replaceToken '$LOOM_VERSION', version +} + jar { + classifier 'jar' +} + +task mainJar(type: Jar, dependsOn: jar) { + from zipTree(jar.archiveFile) + archiveClassifier = "main" + + from configurations.bootstrap.collect { it.isDirectory() ? it : zipTree(it) } +} + +task downgradeJava(type: BridgeTransformingTask, dependsOn: mainJar) { + from zipTree(mainJar.archiveFile) + fromVersion = JavaVersion.VERSION_16 + toVersion = JavaVersion.VERSION_11 + classpath.from configurations.compileClasspath + flags.add "insertRecordConstructorProperties" + manifest { attributes 'Implementation-Version': project.version } - - from configurations.bootstrap.collect { it.isDirectory() ? it : zipTree(it) } } task sourcesJar(type: Jar, dependsOn: classes) { @@ -127,7 +170,7 @@ task javadocJar(type: Jar, dependsOn: javadoc) { spotless { java { licenseHeaderFile(rootProject.file("HEADER")).yearSeparator("-") - targetExclude("**/loom/util/DownloadUtil.java") + targetExclude("**/loom/util/DownloadUtil.java", "**/loom/util/FileSystemUtil.java") } groovy { @@ -148,12 +191,14 @@ codenarc { gradlePlugin { plugins { fabricLoom { - id = 'fabric-loom' + id = 'dev.architectury.loom' implementationClass = 'net.fabricmc.loom.bootstrap.LoomGradlePluginBootstrap' } } } +build.dependsOn downgradeJava + jacoco { toolVersion = "0.8.6" } @@ -171,85 +216,76 @@ jacocoTestReport { test { maxHeapSize = "4096m" useJUnitPlatform() + maxParallelForks = Runtime.runtime.availableProcessors() ?: 1 } +import me.shedaniel.javaversionbridge.BridgeTransformingTask import org.w3c.dom.Document import org.w3c.dom.Element import org.w3c.dom.Node -def patchPom(groovy.util.Node node) { - node.dependencies.first().each { - def groupId = it.get("groupId").first().value().first() +publishing { + publications { + plugin(MavenPublication) { + groupId 'dev.architectury.loom' + artifactId 'dev.architectury.loom.gradle.plugin' - // Patch all eclipse deps to use a strict version - if (groupId.startsWith("org.eclipse.")) { - def version = it.get("version").first().value().first() - it.get("version").first().value = new groovy.util.NodeList(["[$version]"]) + from components.java + artifact downgradeJava + artifact sourcesJar } - } -} -publishing { - publications { - plugin(MavenPublication) { publication -> + maven(MavenPublication) { publication -> groupId project.group artifactId project.archivesBaseName - version project.version - - from components['java'] + from components.java + artifact downgradeJava artifact sourcesJar artifact javadocJar - - pom.withXml { - patchPom(asNode()) - } } - // Also publish a snapshot so people can use the latest version if they wish - snapshot(MavenPublication) { publication -> + if (isSnapshot) return + + mavenSnapshot(MavenPublication) { publication -> groupId project.group artifactId project.archivesBaseName version baseVersion + '-SNAPSHOT' - from components['java'] - + from components.java + artifact downgradeJava artifact sourcesJar artifact javadocJar - - pom.withXml { - patchPom(asNode()) - } } - // Manually crate the plugin marker for snapshot versions - snapshotPlugin(MavenPublication) { publication -> - groupId 'fabric-loom' - artifactId 'fabric-loom.gradle.plugin' + pluginSnapshot(MavenPublication) { + groupId 'dev.architectury.loom' + artifactId 'dev.architectury.loom.gradle.plugin' version baseVersion + '-SNAPSHOT' - pom.withXml({ + pom.withXml { // Based off org.gradle.plugin.devel.plugins.MavenPluginPublishPlugin Element root = asElement() Document document = root.getOwnerDocument() Node dependencies = root.appendChild(document.createElement('dependencies')) Node dependency = dependencies.appendChild(document.createElement('dependency')) Node groupId = dependency.appendChild(document.createElement('groupId')) - groupId.setTextContent('net.fabricmc') + groupId.setTextContent(project.group) Node artifactId = dependency.appendChild(document.createElement('artifactId')) - artifactId.setTextContent('fabric-loom') + artifactId.setTextContent(project.archivesBaseName) Node version = dependency.appendChild(document.createElement('version')) version.setTextContent(baseVersion + '-SNAPSHOT') - }) + } } } + repositories { - maven { - if (ENV.MAVEN_URL) { - url ENV.MAVEN_URL + if (System.getenv("MAVEN_PASS") != null) { + maven { + url = "https://deploy.shedaniel.me/" credentials { - username ENV.MAVEN_USERNAME - password ENV.MAVEN_PASSWORD + username = "shedaniel" + password = System.getenv("MAVEN_PASS") } } } @@ -275,14 +311,15 @@ tasks.withType(GenerateModuleMetadata) { task writeActionsTestMatrix() { doLast { def testMatrix = [] - file('src/test/groovy/net/fabricmc/loom/test/integration').eachFile { + file('src/test/groovy/net/fabricmc/loom/test/integration').traverse { if (it.name.endsWith("Test.groovy")) { if (it.name.endsWith("ReproducibleBuildTest.groovy")) { // This test gets a special case to run across all os's return } - def className = it.name.replace(".groovy", "") + def className = it.path.toString().replace(".groovy", "") + className = className.substring(className.lastIndexOf("integration/") + "integration/".length()).replace('/', '.') testMatrix.add("net.fabricmc.loom.test.integration.${className}") } } @@ -299,4 +336,8 @@ task writeActionsTestMatrix() { tasks.named('wrapper') { distributionType = Wrapper.DistributionType.ALL -}
\ No newline at end of file +} + +tasks.withType(GenerateModuleMetadata) { + enabled = false +} |