2016-08-16 22:29:10 +00:00
|
|
|
plugins {
|
2018-11-03 13:01:34 +00:00
|
|
|
id 'java'
|
|
|
|
id 'maven-publish'
|
|
|
|
id 'java-gradle-plugin'
|
|
|
|
id 'idea'
|
|
|
|
id 'eclipse'
|
2019-06-11 02:26:04 +00:00
|
|
|
id 'groovy'
|
2019-11-02 20:23:27 +00:00
|
|
|
id 'checkstyle'
|
2021-03-06 11:40:07 +00:00
|
|
|
id 'jacoco'
|
2021-03-25 22:57:28 +00:00
|
|
|
id 'codenarc'
|
2021-07-10 20:50:53 +00:00
|
|
|
id "com.diffplug.spotless" version "5.14.1"
|
2016-08-15 10:22:14 +00:00
|
|
|
}
|
|
|
|
|
2021-05-12 13:03:45 +00:00
|
|
|
sourceCompatibility = 16
|
|
|
|
targetCompatibility = 16
|
2016-08-16 22:29:10 +00:00
|
|
|
|
2021-04-04 22:02:00 +00:00
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
|
|
it.options.encoding = "UTF-8"
|
2021-05-12 13:03:45 +00:00
|
|
|
it.options.release = 16
|
2021-04-04 22:02:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2018-10-22 18:25:18 +00:00
|
|
|
group = 'net.fabricmc'
|
2018-05-11 20:57:42 +00:00
|
|
|
archivesBaseName = project.name
|
2021-06-13 10:18:10 +00:00
|
|
|
def baseVersion = '0.9'
|
2018-11-03 18:03:43 +00:00
|
|
|
|
|
|
|
def ENV = System.getenv()
|
|
|
|
if (ENV.BUILD_NUMBER) {
|
2020-07-26 20:32:10 +00:00
|
|
|
version = baseVersion + '.' + ENV.BUILD_NUMBER
|
2020-04-26 13:02:27 +00:00
|
|
|
} else {
|
2020-07-26 20:32:10 +00:00
|
|
|
version = baseVersion + '.local'
|
2018-11-03 18:03:43 +00:00
|
|
|
}
|
|
|
|
|
2016-08-15 10:22:14 +00:00
|
|
|
repositories {
|
2016-08-21 15:11:03 +00:00
|
|
|
maven {
|
2020-07-26 20:32:10 +00:00
|
|
|
name = 'Fabric'
|
2018-12-09 07:21:32 +00:00
|
|
|
url = 'https://maven.fabricmc.net/'
|
2016-08-21 15:11:03 +00:00
|
|
|
}
|
2020-04-11 18:28:48 +00:00
|
|
|
mavenCentral()
|
2016-08-15 10:22:14 +00:00
|
|
|
}
|
|
|
|
|
2021-05-26 10:41:52 +00:00
|
|
|
configurations {
|
|
|
|
bootstrap {
|
|
|
|
transitive false
|
|
|
|
}
|
|
|
|
compileClasspath.extendsFrom bootstrap
|
|
|
|
runtimeClasspath.extendsFrom bootstrap
|
2021-06-14 17:39:03 +00:00
|
|
|
testRuntimeClasspath.extendsFrom bootstrap
|
2021-05-26 10:41:52 +00:00
|
|
|
}
|
|
|
|
|
2021-06-16 18:16:47 +00:00
|
|
|
configurations.all {
|
|
|
|
resolutionStrategy {
|
|
|
|
failOnNonReproducibleResolution()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-08-15 10:22:14 +00:00
|
|
|
dependencies {
|
2018-11-03 13:01:34 +00:00
|
|
|
implementation gradleApi()
|
2018-10-22 18:53:07 +00:00
|
|
|
|
2021-05-26 10:41:52 +00:00
|
|
|
bootstrap project(":bootstrap")
|
|
|
|
|
2019-05-10 22:53:50 +00:00
|
|
|
// libraries
|
2021-01-16 13:50:45 +00:00
|
|
|
implementation ('commons-io:commons-io:2.8.0')
|
|
|
|
implementation ('org.zeroturnaround:zt-zip:1.14')
|
|
|
|
implementation ('com.google.code.gson:gson:2.8.6')
|
2021-05-13 21:06:34 +00:00
|
|
|
implementation ('com.fasterxml.jackson.core:jackson-databind:2.12.3')
|
2021-01-16 13:50:45 +00:00
|
|
|
implementation ('com.google.guava:guava:30.1-jre')
|
2021-06-30 21:33:17 +00:00
|
|
|
implementation ('org.ow2.asm:asm:9.2')
|
|
|
|
implementation ('org.ow2.asm:asm-analysis:9.2')
|
|
|
|
implementation ('org.ow2.asm:asm-commons:9.2')
|
|
|
|
implementation ('org.ow2.asm:asm-tree:9.2')
|
|
|
|
implementation ('org.ow2.asm:asm-util:9.2')
|
2019-05-10 22:53:50 +00:00
|
|
|
|
|
|
|
// game handling utils
|
2021-05-12 18:03:22 +00:00
|
|
|
implementation ('net.fabricmc:stitch:0.6.1') {
|
2019-02-12 19:32:42 +00:00
|
|
|
exclude module: 'enigma'
|
|
|
|
}
|
2019-05-10 22:53:50 +00:00
|
|
|
|
|
|
|
// tinyfile management
|
2021-06-14 07:49:43 +00:00
|
|
|
implementation ('net.fabricmc:tiny-remapper:0.4.2')
|
2021-01-16 13:50:45 +00:00
|
|
|
implementation ('net.fabricmc:tiny-mappings-parser:0.3.0+build.17')
|
2018-12-18 22:36:22 +00:00
|
|
|
|
2020-11-15 16:15:02 +00:00
|
|
|
implementation 'net.fabricmc:access-widener:1.0.0'
|
2021-06-14 17:39:03 +00:00
|
|
|
implementation 'net.fabricmc:mapping-io:0.1.3'
|
2020-11-15 16:15:02 +00:00
|
|
|
|
2021-01-16 13:50:45 +00:00
|
|
|
implementation ('net.fabricmc:lorenz-tiny:3.0.0') {
|
0.2.7 refactors (#178)
* Rough work on project based jars, skeleton for AccessEscalators?
* First working draft
* Minor changes
* Add support for mutable, better error checking when parsing file.
Code cleanup
Remap if needed when reading
* Fix inner classes and genSources
* Fix CME
* Caching, only regen jar when input changes
* Some work, untested
* Fix writing, fix checkstyle issues
* More fixes
* Move jars into a maven file structure, cleans up the file structure, and will benefit idea 2020
Add some basic validation to the AccessWidenerRemapper, will present any issues with the mappings when building (May need a way to disable?)
+ Some bugs fixes
* Fix issues with source jars in idea 2020, should be backwards compatible with 2019
* Move to lorenz-tiny
* Build fix + small cleanup
* Remove accesswidener's for now
* Update dev launch injector, should fix all issues with spaces in the path.
2020-03-06 11:15:34 +00:00
|
|
|
transitive = false
|
|
|
|
}
|
2021-01-16 13:50:45 +00:00
|
|
|
implementation ('org.cadixdev:lorenz-io-proguard:0.5.6')
|
0.2.7 refactors (#178)
* Rough work on project based jars, skeleton for AccessEscalators?
* First working draft
* Minor changes
* Add support for mutable, better error checking when parsing file.
Code cleanup
Remap if needed when reading
* Fix inner classes and genSources
* Fix CME
* Caching, only regen jar when input changes
* Some work, untested
* Fix writing, fix checkstyle issues
* More fixes
* Move jars into a maven file structure, cleans up the file structure, and will benefit idea 2020
Add some basic validation to the AccessWidenerRemapper, will present any issues with the mappings when building (May need a way to disable?)
+ Some bugs fixes
* Fix issues with source jars in idea 2020, should be backwards compatible with 2019
* Move to lorenz-tiny
* Build fix + small cleanup
* Remove accesswidener's for now
* Update dev launch injector, should fix all issues with spaces in the path.
2020-03-06 11:15:34 +00:00
|
|
|
|
2019-05-10 22:53:50 +00:00
|
|
|
// decompilers
|
2021-05-26 10:41:52 +00:00
|
|
|
implementation ('net.fabricmc:fabric-fernflower:1.4.1')
|
2021-05-13 21:06:34 +00:00
|
|
|
implementation ('org.benf:cfr:0.151')
|
2019-05-10 22:53:50 +00:00
|
|
|
|
|
|
|
// source code remapping
|
2021-06-16 18:16:47 +00:00
|
|
|
implementation ('org.cadixdev:mercury:[0.1.0-rc1]')
|
|
|
|
|
|
|
|
// Mercury pulls all of these deps in, however eclipse does not specify the exact version to use so they can get updated without us knowing.
|
|
|
|
// Depend specifically on these versions to prevent them from being updated under our feet.
|
2021-06-16 22:16:44 +00:00
|
|
|
// The POM is also patched later on to as this strict versioning does not make it through.
|
2021-06-16 18:16:47 +00:00
|
|
|
implementation ('org.eclipse.jdt:org.eclipse.jdt.core:[3.21.0]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.compare.core:[3.6.1000]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.core.commands:[3.9.800]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.core.contenttype:[3.7.900]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.core.expressions:[3.7.100]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.core.filesystem:[1.7.700]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.core.jobs:[3.10.1100]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.core.resources:[3.14.0]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.core.runtime:[3.20.100]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.equinox.app:[1.5.100]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.equinox.common:[3.14.100]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.equinox.preferences:[3.8.200]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.equinox.registry:[3.10.100]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.osgi:[3.16.200]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.team.core:[3.8.1100]')
|
|
|
|
implementation ('org.eclipse.platform:org.eclipse.text:[3.11.0]')
|
|
|
|
|
2018-12-18 22:36:22 +00:00
|
|
|
|
2020-05-22 13:38:25 +00:00
|
|
|
// Kapt integration
|
2021-05-13 21:06:34 +00:00
|
|
|
compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0')
|
2020-05-22 13:38:25 +00:00
|
|
|
|
2019-06-11 02:26:04 +00:00
|
|
|
// Testing
|
|
|
|
testImplementation(gradleTestKit())
|
2021-06-14 17:39:03 +00:00
|
|
|
testImplementation('org.spockframework:spock-core:2.0-groovy-3.0') {
|
2020-06-08 14:19:11 +00:00
|
|
|
exclude module: 'groovy-all'
|
2019-11-02 20:23:27 +00:00
|
|
|
}
|
2021-05-13 21:06:34 +00:00
|
|
|
testImplementation 'io.javalin:javalin:3.13.7'
|
2020-12-24 20:58:30 +00:00
|
|
|
|
|
|
|
compileOnly 'org.jetbrains:annotations:20.1.0'
|
2019-11-02 20:23:27 +00:00
|
|
|
}
|
|
|
|
|
2016-08-15 10:22:14 +00:00
|
|
|
jar {
|
2018-11-03 18:03:43 +00:00
|
|
|
manifest {
|
2021-03-03 21:20:37 +00:00
|
|
|
attributes 'Implementation-Version': project.version
|
2018-11-03 18:03:43 +00:00
|
|
|
}
|
2021-05-26 10:41:52 +00:00
|
|
|
|
|
|
|
from configurations.bootstrap.collect { it.isDirectory() ? it : zipTree(it) }
|
2016-08-15 10:22:14 +00:00
|
|
|
}
|
|
|
|
|
2018-11-04 00:27:55 +00:00
|
|
|
task sourcesJar(type: Jar, dependsOn: classes) {
|
2021-04-04 22:02:00 +00:00
|
|
|
archiveClassifier = 'sources'
|
2018-11-04 00:27:55 +00:00
|
|
|
from sourceSets.main.allSource
|
|
|
|
}
|
|
|
|
|
|
|
|
task javadocJar(type: Jar, dependsOn: javadoc) {
|
2021-04-04 22:02:00 +00:00
|
|
|
archiveClassifier = 'javadoc'
|
2018-11-04 00:27:55 +00:00
|
|
|
from javadoc.destinationDir
|
|
|
|
}
|
|
|
|
|
2021-07-10 20:50:53 +00:00
|
|
|
spotless {
|
|
|
|
java {
|
|
|
|
licenseHeaderFile(rootProject.file("HEADER")).yearSeparator("-")
|
|
|
|
targetExclude("**/loom/util/DownloadUtil.java")
|
|
|
|
}
|
|
|
|
|
|
|
|
groovy {
|
|
|
|
licenseHeaderFile(rootProject.file("HEADER")).yearSeparator("-")
|
|
|
|
}
|
2019-04-19 19:56:58 +00:00
|
|
|
}
|
|
|
|
|
2019-11-02 20:23:27 +00:00
|
|
|
checkstyle {
|
2020-07-26 20:32:10 +00:00
|
|
|
configFile = file('checkstyle.xml')
|
2021-07-10 20:50:53 +00:00
|
|
|
toolVersion = '8.44'
|
2019-11-02 20:23:27 +00:00
|
|
|
}
|
|
|
|
|
2021-03-25 22:57:28 +00:00
|
|
|
codenarc {
|
2021-05-13 21:06:34 +00:00
|
|
|
toolVersion = "2.1.0"
|
2021-03-25 22:57:28 +00:00
|
|
|
configFile = file("codenarc.groovy")
|
|
|
|
}
|
|
|
|
|
2018-11-03 13:01:34 +00:00
|
|
|
gradlePlugin {
|
|
|
|
plugins {
|
2019-07-24 21:10:13 +00:00
|
|
|
fabricLoom {
|
2020-07-26 20:32:10 +00:00
|
|
|
id = 'fabric-loom'
|
2021-05-26 10:41:52 +00:00
|
|
|
implementationClass = 'net.fabricmc.loom.bootstrap.LoomGradlePluginBootstrap'
|
2018-11-03 13:01:34 +00:00
|
|
|
}
|
|
|
|
}
|
2018-05-14 10:50:02 +00:00
|
|
|
}
|
|
|
|
|
2021-03-06 11:40:07 +00:00
|
|
|
jacoco {
|
|
|
|
toolVersion = "0.8.6"
|
|
|
|
}
|
|
|
|
|
|
|
|
// Run to get test coverage.
|
|
|
|
jacocoTestReport {
|
|
|
|
dependsOn test
|
|
|
|
reports {
|
|
|
|
xml.enabled false
|
|
|
|
csv.enabled false
|
|
|
|
html.destination file("${buildDir}/jacocoHtml")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-03-06 15:57:58 +00:00
|
|
|
test {
|
|
|
|
maxHeapSize = "4096m"
|
2021-04-04 22:02:00 +00:00
|
|
|
useJUnitPlatform()
|
2021-03-06 15:57:58 +00:00
|
|
|
}
|
|
|
|
|
2020-05-14 01:07:34 +00:00
|
|
|
import org.w3c.dom.Document
|
|
|
|
import org.w3c.dom.Element
|
|
|
|
import org.w3c.dom.Node
|
|
|
|
|
2021-06-16 22:16:44 +00:00
|
|
|
def patchPom(groovy.util.Node node) {
|
|
|
|
node.dependencies.first().each {
|
|
|
|
def groupId = it.get("groupId").first().value().first()
|
|
|
|
|
|
|
|
// 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]"])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-05-14 10:50:02 +00:00
|
|
|
publishing {
|
|
|
|
publications {
|
2018-11-04 00:27:55 +00:00
|
|
|
plugin(MavenPublication) { publication ->
|
2018-08-10 17:15:05 +00:00
|
|
|
groupId project.group
|
2018-05-14 10:50:02 +00:00
|
|
|
artifactId project.archivesBaseName
|
|
|
|
version project.version
|
|
|
|
|
2020-07-26 20:32:10 +00:00
|
|
|
from components['java']
|
2019-06-11 02:26:04 +00:00
|
|
|
|
2018-11-04 00:27:55 +00:00
|
|
|
artifact sourcesJar
|
|
|
|
artifact javadocJar
|
2021-06-16 22:16:44 +00:00
|
|
|
|
|
|
|
pom.withXml {
|
|
|
|
patchPom(asNode())
|
|
|
|
}
|
2018-05-14 10:50:02 +00:00
|
|
|
}
|
2020-05-13 19:03:26 +00:00
|
|
|
|
2020-07-26 20:32:10 +00:00
|
|
|
// Also publish a snapshot so people can use the latest version if they wish
|
2020-05-13 19:03:26 +00:00
|
|
|
snapshot(MavenPublication) { publication ->
|
|
|
|
groupId project.group
|
|
|
|
artifactId project.archivesBaseName
|
2020-07-26 20:32:10 +00:00
|
|
|
version baseVersion + '-SNAPSHOT'
|
2020-05-13 19:03:26 +00:00
|
|
|
|
2020-07-26 20:32:10 +00:00
|
|
|
from components['java']
|
2020-05-13 19:03:26 +00:00
|
|
|
|
|
|
|
artifact sourcesJar
|
|
|
|
artifact javadocJar
|
2021-06-16 22:16:44 +00:00
|
|
|
|
|
|
|
pom.withXml {
|
|
|
|
patchPom(asNode())
|
|
|
|
}
|
2020-05-13 19:03:26 +00:00
|
|
|
}
|
2020-05-14 01:07:34 +00:00
|
|
|
|
2020-07-26 20:32:10 +00:00
|
|
|
// Manually crate the plugin marker for snapshot versions
|
2020-05-14 01:07:34 +00:00
|
|
|
snapshotPlugin(MavenPublication) { publication ->
|
2020-07-26 20:32:10 +00:00
|
|
|
groupId 'fabric-loom'
|
|
|
|
artifactId 'fabric-loom.gradle.plugin'
|
|
|
|
version baseVersion + '-SNAPSHOT'
|
2020-05-14 01:07:34 +00:00
|
|
|
|
|
|
|
pom.withXml({
|
2020-07-26 20:32:10 +00:00
|
|
|
// Based off org.gradle.plugin.devel.plugins.MavenPluginPublishPlugin
|
2020-05-14 01:07:34 +00:00
|
|
|
Element root = asElement()
|
|
|
|
Document document = root.getOwnerDocument()
|
2020-07-26 20:32:10 +00:00
|
|
|
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')
|
|
|
|
Node artifactId = dependency.appendChild(document.createElement('artifactId'))
|
|
|
|
artifactId.setTextContent('fabric-loom')
|
|
|
|
Node version = dependency.appendChild(document.createElement('version'))
|
|
|
|
version.setTextContent(baseVersion + '-SNAPSHOT')
|
2020-05-14 01:07:34 +00:00
|
|
|
})
|
|
|
|
}
|
2018-05-14 10:50:02 +00:00
|
|
|
}
|
|
|
|
repositories {
|
|
|
|
maven {
|
2020-11-15 17:32:57 +00:00
|
|
|
if (ENV.MAVEN_URL) {
|
|
|
|
url ENV.MAVEN_URL
|
2018-05-14 10:50:02 +00:00
|
|
|
credentials {
|
2020-11-15 17:32:57 +00:00
|
|
|
username ENV.MAVEN_USERNAME
|
|
|
|
password ENV.MAVEN_PASSWORD
|
2018-05-14 10:50:02 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2021-03-06 11:40:07 +00:00
|
|
|
}
|
|
|
|
|
2021-05-26 10:41:52 +00:00
|
|
|
// Need to tweak this file to pretend we are compatible with j8 so the bootstrap will run.
|
|
|
|
tasks.withType(GenerateModuleMetadata) {
|
|
|
|
doLast {
|
|
|
|
def file = outputFile.get().asFile
|
|
|
|
|
|
|
|
def metadata = new groovy.json.JsonSlurper().parseText(file.text)
|
|
|
|
|
|
|
|
metadata.variants.each {
|
|
|
|
it.attributes["org.gradle.jvm.version"] = 8
|
|
|
|
}
|
|
|
|
|
|
|
|
file.text = groovy.json.JsonOutput.toJson(metadata)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-03-06 11:40:07 +00:00
|
|
|
// A task to output a json file with a list of all the test to run
|
|
|
|
task writeActionsTestMatrix() {
|
|
|
|
doLast {
|
|
|
|
def testMatrix = []
|
2021-04-09 19:44:18 +00:00
|
|
|
file('src/test/groovy/net/fabricmc/loom/test/integration').eachFile {
|
2021-03-06 11:40:07 +00:00
|
|
|
if (it.name.endsWith("Test.groovy")) {
|
2021-03-15 23:31:18 +00:00
|
|
|
if (it.name.endsWith("ReproducibleBuildTest.groovy")) {
|
|
|
|
// This test gets a special case to run across all os's
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2021-04-02 11:20:03 +00:00
|
|
|
def className = it.name.replace(".groovy", "")
|
2021-04-09 19:44:18 +00:00
|
|
|
testMatrix.add("net.fabricmc.loom.test.integration.${className}")
|
2021-03-06 11:40:07 +00:00
|
|
|
}
|
|
|
|
}
|
2021-04-02 11:20:03 +00:00
|
|
|
|
|
|
|
// Run all the unit tests togeather
|
|
|
|
testMatrix.add("net.fabricmc.loom.test.unit.*")
|
|
|
|
|
2021-03-06 11:40:07 +00:00
|
|
|
def json = groovy.json.JsonOutput.toJson(testMatrix)
|
|
|
|
def output = file("build/test_matrix.json")
|
|
|
|
output.parentFile.mkdir()
|
|
|
|
output.text = json
|
|
|
|
}
|
2021-05-28 10:31:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
tasks.named('wrapper') {
|
|
|
|
distributionType = Wrapper.DistributionType.ALL
|
2020-06-08 14:19:11 +00:00
|
|
|
}
|