fabric-loom/build.gradle

186 lines
4.4 KiB
Groovy

plugins {
id 'java'
id 'maven-publish'
id 'java-gradle-plugin'
id 'idea'
id 'eclipse'
id 'groovy'
id 'checkstyle'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
group = 'net.fabricmc'
archivesBaseName = project.name
def baseVersion = '0.6'
def build = 'local'
def ENV = System.getenv()
if (ENV.BUILD_NUMBER) {
build = "release #${ENV.BUILD_NUMBER}"
version = baseVersion + '.' + ENV.BUILD_NUMBER
} else {
version = baseVersion + '.local'
}
repositories {
maven {
name = 'Fabric'
url = 'https://maven.fabricmc.net/'
}
mavenCentral()
}
dependencies {
implementation gradleApi()
// libraries
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')
implementation ('org.ow2.asm:asm:9.0')
implementation ('org.ow2.asm:asm-analysis:9.0')
implementation ('org.ow2.asm:asm-commons:9.0')
implementation ('org.ow2.asm:asm-tree:9.0')
implementation ('org.ow2.asm:asm-util:9.0')
// game handling utils
implementation ('net.fabricmc:stitch:0.5.1+build.77') {
exclude module: 'enigma'
}
// tinyfile management
implementation ('net.fabricmc:tiny-remapper:0.3.2')
implementation ('net.fabricmc:tiny-mappings-parser:0.3.0+build.17')
implementation 'net.fabricmc:access-widener:1.0.0'
implementation ('net.fabricmc:lorenz-tiny:3.0.0') {
transitive = false
}
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
implementation ('org.cadixdev:mercury:0.1.0-rc1')
// Kapt integration
compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.21')
// Testing
testImplementation(gradleTestKit())
testImplementation('org.spockframework:spock-core:1.3-groovy-2.4') {
exclude module: 'groovy-all'
}
compileOnly 'org.jetbrains:annotations:20.1.0'
}
jar {
manifest {
attributes 'Implementation-Version': version + ' Build(' + build + ')'
}
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
apply from: 'https://github.com/FabricMC/fabric-docs/raw/master/gradle/license.gradle'
license {
exclude '**/loom/util/DownloadUtil.java'
}
checkstyle {
configFile = file('checkstyle.xml')
toolVersion = '8.25'
}
checkstyleMain {
logging.setLevel(LogLevel.LIFECYCLE)
}
gradlePlugin {
plugins {
fabricLoom {
id = 'fabric-loom'
implementationClass = 'net.fabricmc.loom.LoomGradlePlugin'
}
}
}
import org.w3c.dom.Document
import org.w3c.dom.Element
import org.w3c.dom.Node
publishing {
publications {
plugin(MavenPublication) { publication ->
groupId project.group
artifactId project.archivesBaseName
version project.version
from components['java']
artifact sourcesJar
artifact javadocJar
}
// Also publish a snapshot so people can use the latest version if they wish
snapshot(MavenPublication) { publication ->
groupId project.group
artifactId project.archivesBaseName
version baseVersion + '-SNAPSHOT'
from components['java']
artifact sourcesJar
artifact javadocJar
}
// Manually crate the plugin marker for snapshot versions
snapshotPlugin(MavenPublication) { publication ->
groupId 'fabric-loom'
artifactId 'fabric-loom.gradle.plugin'
version baseVersion + '-SNAPSHOT'
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')
Node artifactId = dependency.appendChild(document.createElement('artifactId'))
artifactId.setTextContent('fabric-loom')
Node version = dependency.appendChild(document.createElement('version'))
version.setTextContent(baseVersion + '-SNAPSHOT')
})
}
}
repositories {
maven {
if (ENV.MAVEN_URL) {
url ENV.MAVEN_URL
credentials {
username ENV.MAVEN_USERNAME
password ENV.MAVEN_PASSWORD
}
}
}
}
}