buildscript { repositories { mavenCentral() maven { name = "forge" url = "https://files.minecraftforge.net/maven" } maven { name = "sonatype" url = "https://oss.sonatype.org/content/repositories/snapshots/" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' } } plugins { id "com.matthewprenger.cursegradle" version "1.0.9" } apply plugin: 'scala' apply plugin: 'forge' apply plugin: 'idea' apply plugin: 'maven-publish' file "build.properties" withReader { def prop = new Properties() prop.load(it) ext.config = new ConfigSlurper().parse prop } version = "${config.oc.version}" group = "li.cil.oc" archivesBaseName = "OpenComputers" def getGitRef() { try { def stdout = new ByteArrayOutputStream() exec { commandLine 'git', 'rev-parse', '--short', 'HEAD' standardOutput = stdout } return stdout.toString().trim() } catch (Throwable e) { return "unknown" } } if (System.getenv("PROMOTED_NUMBER") != null) version += ".${System.getenv("PROMOTED_NUMBER")}" else if (System.getenv("BUILD_NUMBER") != null) version += ".${System.getenv("BUILD_NUMBER")}" else version += "+" + getGitRef() ext.simpleVersion = version version = "MC${config.minecraft.version}-${project.version}" runClient { jvmArgs '-Dfml.coreMods.load=li.cil.oc.common.launch.TransformerLoader' } runServer { jvmArgs '-Dfml.coreMods.load=li.cil.oc.common.launch.TransformerLoader' } if (JavaVersion.current().isJava8Compatible()) { allprojects { tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') } } } repositories { maven { name = "mightypirates" url = "https://maven.cil.li/" } } configurations { provided embedded compile.extendsFrom embedded } dependencies { provided "appeng:RotaryCraft:${config.rotc.version}:api" provided ("appeng:appliedenergistics2:${config.ae2.version}:dev") { exclude module: 'buildcraft' } provided "codechicken:CodeChickenLib:${config.minecraft.version}-${config.ccl.version}:dev" provided "codechicken:EnderStorage:${config.minecraft.version}-${config.es.version}:dev" provided "codechicken:ForgeMultipart:${config.minecraft.version}-${config.fmp.version}:dev" provided "codechicken:NotEnoughItems:${config.minecraft.version}-${config.nei.version}:dev" provided "codechicken:WR-CBE:${config.minecraft.version}-${config.wrcbe.version}:dev" provided "com.bluepowermod:BluePower:${config.bluepower.version}:deobf" provided "com.gregoriust.gregtech:gregtech_${config.minecraft.version}:${config.gt.version}:dev" provided "igwmod:IGW-Mod-1.7.10:${config.igwmod.version}:userdev" provided "li.cil.tis3d:TIS-3D:${config.tis3d.version}:dev" provided "mcp.mobius.waila:Waila:${config.waila.version}_${config.minecraft.version}:dev" provided "net.industrial-craft:industrialcraft-2:${config.ic2.version}:dev" provided "net.sengir.forestry:forestry_${config.minecraft.version}:${config.forestry.version}:dev" provided "dev.modwarriors.notenoughkeys:NotEnoughKeys:${config.minecraft.version}-${config.nek.version}:deobf-dev" provided "qmunity:QmunityLib:${config.qmunitylib.version}:deobf" provided "tmech:TMechworks:${config.minecraft.version}-${config.tmech.version}:deobf" provided ("mrtjp:ProjectRed:${config.projred.version}:dev") { exclude module: 'CoFHCore' } // provided "coloredlightscore:ColoredLightsCore:${config.coloredlights.version}:api" provided name: 'buildcraft', version: config.bc.version, classifier: "dev", ext: 'jar' provided name: 'GalacticraftCoreAll', version: config.gc.version, ext: 'jar' provided name: 'MekanismAll', version: config.mekanism.version, ext: 'jar' provided name: 'redlogic', version: config.redlogic.version, ext: 'jar' provided name: 'CoFHLib', version: config.cofhlib.version, ext: 'jar' provided name: 'CoFHCore', version: config.cofhcore.version, ext: 'jar' provided name: 'MineFactoryReloaded', version: config.mfr.version, ext: 'jar' provided name: 'ComputerCraft', version: config.cc.version, ext: 'jar' provided name: 'EnderIO', version: config.eio.version, ext: 'jar' provided name: 'Railcraft', version: config.rc.version, ext: 'jar' provided name: 'BloodMagic', version: config.bloodmagic.version, ext: 'jar' provided name: 'ExtraCells', version: config.ec.version, ext: 'jar' provided name: 'ThaumicEnergistics', version: config.thaumicenergistics.version, ext: 'jar' compile 'com.google.code.findbugs:jsr305:1.3.9' // Annotations used by google libs. embedded files('libs/OpenComputers-JNLua.jar', 'libs/OpenComputers-LuaJ.jar') testCompile "org.mockito:mockito-all:1.10.19" testCompile "org.scalactic:scalactic_2.11:2.2.6" testCompile "org.scalatest:scalatest_2.11:2.2.6" } // Add the "provided" dependencies to the compile (but NOT runtime) classpath. sourceSets.main.compileClasspath += [configurations.provided] idea.module.scopes.PROVIDED.plus += [configurations.provided] // TODO Causes errors on Gradle 2 for me (No such property: allDependencies for class: java.io.File). //eclipse.classpath.plusConfigurations += [configurations.provided] minecraft { version = "${config.minecraft.version}-${config.forge.version}" replace "@VERSION@", project.simpleVersion replace "/*@MCVERSIONDEP@*/", ", acceptedMinecraftVersions = \"[${config.minecraft.version},${config.minecraft.version}+)\"" } processResources { from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' expand 'version': project.simpleVersion, 'mcversion': config.minecraft.version } from(sourceSets.main.resources.srcDirs) { include 'application.conf' filter { line -> line.replaceAll("@VERSION@", project.simpleVersion) } } from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' exclude 'application.conf' } // Move access transformer to META-INF rename '(.+_at.cfg)', 'META-INF/$1' } def commonManifest = { attributes FMLCorePlugin: "li.cil.oc.common.launch.TransformerLoader" attributes FMLCorePluginContainsFMLMod: "true" attributes FMLAT: "oc_at.cfg" } jar { exclude "cofh/**" exclude "mods/**" configurations.embedded.each { dep -> from(project.zipTree(dep)) { exclude 'META-INF', 'META-INF/**' } } classifier = 'universal' manifest commonManifest } javadoc { include 'li/cil/oc/api/**' } // because the normal default jar task has been modified to be obfuscated task deobfJar(type: Jar) { from sourceSets.main.output exclude "cofh/**" exclude "mods/**" configurations.embedded.each { dep -> from(project.zipTree(dep)) { exclude 'META-INF', 'META-INF/**' } } classifier = 'dev' manifest commonManifest } task apiJar(type: Jar) { from sourceSets.main.output from sourceSets.main.java classifier = 'api' include 'li/cil/oc/api/**' } task javadocJar(type: Jar, dependsOn: javadoc) { from 'build/docs/javadoc' classifier 'javadoc' } task sourcesJar(type: Jar) { from sourceSets.main.java from sourceSets.main.scala classifier = 'sources' } artifacts { archives deobfJar archives apiJar archives javadocJar archives sourcesJar } publishing { publications { mavenJava(MavenPublication) { artifact jar artifact apiJar artifact javadocJar artifact sourcesJar artifact deobfJar { classifier 'dev' } } } repositories { maven { url System.getenv("MAVEN_PATH") } } } curseforge { apiKey = project.hasProperty("curseForgeApiKey") ? project.curseForgeApiKey : "" project { id = config.curse.project.id releaseType = config.curse.project.releaseType changelogType = "markdown" changelog = file("changelog.md") addGameVersion config.minecraft.version addGameVersion "Java 8" } } // this is needed for IntelliJ so we don't have to copy over the assets manually every time idea { module { outputDir = file('build/classes/main') } }