aboutsummaryrefslogtreecommitdiff
path: root/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'build.gradle')
-rw-r--r--build.gradle161
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
+}