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-12-04 14:27:36 +00:00
|
|
|
sourceCompatibility = 17
|
|
|
|
targetCompatibility = 17
|
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-12-04 14:27:36 +00:00
|
|
|
it.options.release = 17
|
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-12-04 14:10:12 +00:00
|
|
|
def baseVersion = '0.11'
|
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()
|
2021-09-07 10:28:51 +00:00
|
|
|
mavenLocal()
|
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-12-04 14:27:36 +00:00
|
|
|
implementation ('commons-io:commons-io:2.11.0')
|
|
|
|
implementation ('com.google.code.gson:gson:2.8.9')
|
|
|
|
implementation ('com.fasterxml.jackson.core:jackson-databind:2.13.0')
|
|
|
|
implementation ('com.google.guava:guava:31.0.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-10-14 16:04:40 +00:00
|
|
|
implementation ('net.fabricmc:tiny-remapper:0.7.0')
|
2021-12-02 18:59:47 +00:00
|
|
|
implementation 'net.fabricmc:access-widener:2.1.0'
|
2021-09-11 13:39:19 +00:00
|
|
|
implementation 'net.fabricmc:mapping-io:0.2.1'
|
2020-11-15 16:15:02 +00:00
|
|
|
|
2021-09-30 18:26:18 +00:00
|
|
|
implementation ('net.fabricmc:lorenz-tiny:4.0.2') {
|
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
|
|
|
|
}
|
|
|
|
|
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-10-30 22:41:19 +00:00
|
|
|
implementation ('net.fabricmc:cfr:0.0.9')
|
2019-05-10 22:53:50 +00:00
|
|
|
|
|
|
|
// source code remapping
|
2021-07-24 18:35:39 +00:00
|
|
|
implementation ('net.fabricmc:mercury:0.2.4')
|
2018-12-18 22:36:22 +00:00
|
|
|
|
2020-05-22 13:38:25 +00:00
|
|
|
// Kapt integration
|
2021-12-04 14:27:36 +00:00
|
|
|
compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.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-09-07 11:31:16 +00:00
|
|
|
testImplementation 'io.javalin:javalin:3.13.11'
|
2021-11-25 14:49:17 +00:00
|
|
|
testImplementation 'net.fabricmc:fabric-installer:0.9.0'
|
2020-12-24 20:58:30 +00:00
|
|
|
|
2021-12-04 14:27:36 +00:00
|
|
|
compileOnly 'org.jetbrains:annotations:23.0.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
|
|
|
}
|
|
|
|
|
2022-01-14 19:50:45 +00:00
|
|
|
java {
|
|
|
|
withSourcesJar()
|
2018-11-04 00:27:55 +00:00
|
|
|
}
|
|
|
|
|
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-12-04 14:27:36 +00:00
|
|
|
toolVersion = '9.2'
|
2019-11-02 20:23:27 +00:00
|
|
|
}
|
|
|
|
|
2021-03-25 22:57:28 +00:00
|
|
|
codenarc {
|
2021-12-04 14:27:36 +00:00
|
|
|
toolVersion = "2.2.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 {
|
2021-12-04 14:27:36 +00:00
|
|
|
toolVersion = "0.8.7"
|
2021-03-06 11:40:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Run to get test coverage.
|
|
|
|
jacocoTestReport {
|
|
|
|
dependsOn test
|
|
|
|
reports {
|
2021-12-17 15:37:00 +00:00
|
|
|
xml.required = false
|
|
|
|
csv.required = false
|
2021-03-06 11:40:07 +00:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2021-12-29 18:34:09 +00:00
|
|
|
import org.gradle.util.GradleVersion
|
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
|
|
|
|
|
2022-01-14 19:50:45 +00:00
|
|
|
from components.java
|
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
|
|
|
|
2022-01-14 19:50:45 +00:00
|
|
|
from components.java
|
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
|
2021-12-29 18:34:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Run this task to download the gradle sources next to the api jar, you may need to manually attach the sources jar
|
|
|
|
*/
|
|
|
|
task downloadGradleSources() {
|
|
|
|
doLast {
|
|
|
|
// Awful hack to find the gradle api location
|
|
|
|
def gradleApiFile = project.configurations.detachedConfiguration(dependencies.gradleApi()).files.stream()
|
|
|
|
.filter {
|
|
|
|
it.name.startsWith("gradle-api")
|
|
|
|
}.findFirst().orElseThrow()
|
|
|
|
|
|
|
|
def gradleApiSources = new File(gradleApiFile.absolutePath.replace(".jar", "-sources.jar"))
|
|
|
|
def url = "https://services.gradle.org/distributions/gradle-${GradleVersion.current().getVersion()}-src.zip"
|
|
|
|
|
|
|
|
gradleApiSources.delete()
|
|
|
|
|
|
|
|
println("Downloading (${url}) to (${gradleApiSources})")
|
|
|
|
gradleApiSources << new URL(url).newInputStream()
|
|
|
|
}
|
2020-06-08 14:19:11 +00:00
|
|
|
}
|