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.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 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.39' } 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 } } } } }