fabric-loom/build.gradle

244 lines
5.6 KiB
Groovy
Raw Normal View History

plugins {
id 'java'
id 'maven-publish'
id 'java-gradle-plugin'
id 'idea'
id 'eclipse'
id 'groovy'
id 'checkstyle'
id 'jacoco'
id 'codenarc'
id "org.cadixdev.licenser" version "0.5.0"
2016-08-15 10:22:14 +00:00
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
tasks.withType(JavaCompile).configureEach {
it.options.encoding = "UTF-8"
if (JavaVersion.current().isJava9Compatible()) {
it.options.release = 8
}
}
2018-10-22 18:25:18 +00:00
group = 'net.fabricmc'
2018-05-11 20:57:42 +00:00
archivesBaseName = project.name
2021-03-03 21:20:37 +00:00
def baseVersion = '0.7'
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
} 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
}
dependencies {
implementation gradleApi()
2018-10-22 18:53:07 +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')
implementation ('com.google.guava:guava:30.1-jre')
2021-02-12 18:18:42 +00:00
implementation ('org.ow2.asm:asm:9.1')
implementation ('org.ow2.asm:asm-analysis:9.1')
implementation ('org.ow2.asm:asm-commons:9.1')
implementation ('org.ow2.asm:asm-tree:9.1')
implementation ('org.ow2.asm:asm-util:9.1')
// game handling utils
2021-01-16 13:50:45 +00:00
implementation ('net.fabricmc:stitch:0.5.1+build.77') {
2019-02-12 19:32:42 +00:00
exclude module: 'enigma'
}
// tinyfile management
2021-01-16 13:50:45 +00:00
implementation ('net.fabricmc:tiny-remapper:0.3.2')
implementation ('net.fabricmc:tiny-mappings-parser:0.3.0+build.17')
2018-12-18 22:36:22 +00:00
implementation 'net.fabricmc:access-widener:1.0.0'
2021-01-16 13:50:45 +00:00
implementation ('net.fabricmc:lorenz-tiny:3.0.0') {
transitive = false
}
2021-01-16 13:50:45 +00:00
implementation ('org.cadixdev:lorenz-io-proguard:0.5.6')
// decompilers
implementation ('net.fabricmc:fabric-fernflower:1.3.0')
implementation ('org.benf:cfr:0.150')
// source code remapping
2020-11-15 16:03:16 +00:00
implementation ('org.cadixdev:mercury:0.1.0-rc1')
2018-12-18 22:36:22 +00:00
// Kapt integration
compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32')
// Testing
testImplementation(gradleTestKit())
testImplementation('org.spockframework:spock-core:2.0-M5-groovy-3.0') {
exclude module: 'groovy-all'
}
2021-03-27 20:26:10 +00:00
testImplementation 'io.javalin:javalin:3.13.4'
compileOnly 'org.jetbrains:annotations:20.1.0'
}
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
}
2016-08-15 10:22:14 +00:00
}
task sourcesJar(type: Jar, dependsOn: classes) {
archiveClassifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
archiveClassifier = 'javadoc'
from javadoc.destinationDir
}
2019-04-19 19:56:58 +00:00
license {
header rootProject.file("HEADER")
include "**/*.java"
include "**/*.groovy"
2019-04-19 19:56:58 +00:00
exclude '**/loom/util/DownloadUtil.java'
exclude '**/projects'
2019-04-19 19:56:58 +00:00
}
checkstyle {
2020-07-26 20:32:10 +00:00
configFile = file('checkstyle.xml')
toolVersion = '8.41.1'
}
codenarc {
toolVersion = "2.0.0"
configFile = file("codenarc.groovy")
}
gradlePlugin {
plugins {
2019-07-24 21:10:13 +00:00
fabricLoom {
2020-07-26 20:32:10 +00:00
id = 'fabric-loom'
implementationClass = 'net.fabricmc.loom.LoomGradlePlugin'
}
}
2018-05-14 10:50:02 +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"
useJUnitPlatform()
2021-03-06 15:57:58 +00:00
}
import org.w3c.dom.Document
import org.w3c.dom.Element
import org.w3c.dom.Node
2018-05-14 10:50:02 +00:00
publishing {
publications {
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']
artifact sourcesJar
artifact javadocJar
2018-05-14 10:50:02 +00:00
}
2020-07-26 20:32:10 +00:00
// Also publish a snapshot so people can use the latest version if they wish
snapshot(MavenPublication) { publication ->
groupId project.group
artifactId project.archivesBaseName
2020-07-26 20:32:10 +00:00
version baseVersion + '-SNAPSHOT'
2020-07-26 20:32:10 +00:00
from components['java']
artifact sourcesJar
artifact javadocJar
}
2020-07-26 20:32:10 +00:00
// Manually crate the plugin marker for snapshot versions
snapshotPlugin(MavenPublication) { publication ->
2020-07-26 20:32:10 +00:00
groupId 'fabric-loom'
artifactId 'fabric-loom.gradle.plugin'
version baseVersion + '-SNAPSHOT'
pom.withXml({
2020-07-26 20:32:10 +00:00
// Based off org.gradle.plugin.devel.plugins.MavenPluginPublishPlugin
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')
})
}
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
}
}
}
}
}
// 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 {
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
}
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-04-02 11:20:03 +00:00
// Run all the unit tests togeather
testMatrix.add("net.fabricmc.loom.test.unit.*")
def json = groovy.json.JsonOutput.toJson(testMatrix)
def output = file("build/test_matrix.json")
output.parentFile.mkdir()
output.text = json
}
}