Posted March 2, 20187 yr Greetings all! I have been creating an API for my mod so that I can use it to create add-ons. I have been looking at code from Galacticraft and others in order to get Gradle to build the API into a separate jar. I have added a new task to Gradle called packApi but when I go to build I only get the main and sources jar, no API jar. Is there something I am missing? Here's my build.gradle file: buildscript { repositories { jcenter() maven { name = "forge" url = "http://files.minecraftforge.net/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle.forge' //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. sourceSets.main { java { srcDirs = ['src/main/java'] } resources { srcDirs = ['src/main/resources'] } } def mcVersion = "1.11.2" def spVersion = "0.1.0" version = "${mcVersion}-${spVersion}" group = "net.coolsimulations.SurvivalPlus" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "SurvivalPlus" sourceCompatibility = targetCompatibility = "1.8" // Need this here so eclipse task generates correctly. compileJava { sourceCompatibility = targetCompatibility = "1.8" } minecraft { version = "1.11.2-13.20.1.2454" runDir = "run" // the mappings can be changed at any time, and must be in the following format. // snapshot_YYYYMMDD snapshot are built nightly. // stable_# stables are built at the discretion of the MCP team. // Use non-default mappings at your own risk. they may not always work. // simply re-run your setup task after changing the mappings to update your workspace. mappings = "snapshot_20161220" // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } // Keep a list of main mod files/directories for easy jar packing ext.coreFiles = ['net/coolsimulations/SurvivalPlus/core/**', 'assets/sp/**'] // Keep a list of core files/directories for easy jar packing ext.apiFiles = ['net/coolsimulations/SurvivalPlus/api/**'] dependencies { // you may put jars on which you depend on in ./libs // or you may define them like so.. //compile "some.group:artifact:version:classifier" //compile "some.group:artifact:version" // real examples //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env // the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. //provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' // the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided, // except that these dependencies get remapped to your current MCP mappings //deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev' //deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev' // for more info... // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html } processResources { // this will ensure that this task is redone when the versions change. inputs.property "version", project.version inputs.property "mcversion", project.minecraft.version // replace stuff in mcmod.info, nothing else from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' // replace version and mcversion expand 'version':project.version, 'mcversion':project.minecraft.version } // copy everything else except the mcmod.info from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } } task packApi(type: Jar, dependsOn: "classes") { // Jar will always be updated outputs.upToDateWhen {false} // Set the jar's base name baseName = "SurvivalPlus-API" from (sourceSets.main.output) { // Add necessary files, remove unnecessary ones. includes.addAll(project.ext.apiFiles) //includes.addAll('LICENSE.txt') excludes.addAll(project.ext.coreFiles) excludes.addAll('**/*.info') excludes.addAll('assets') } } Any help here would be appreciated.
March 2, 20187 yr you need to compile the jar by putting the jar:{} or something like that and then in that put the compile tags. I could never find a good explanation on how it works so I used hard coded version to compile the dependencies. Edited March 2, 20187 yr by jredfox
March 2, 20187 yr Author So I've added this above task packApi. However, I still don't get an API jar when I build. jar { // Add necessary files, remove unnecessary ones. includes.addAll(project.ext.coreFiles) includes.addAll(project.ext.apiFiles) includes.addAll('mcmod.info') //includes.addAll('LICENSE.txt') }
March 5, 20187 yr Author I'm still trying to get this to work with no success. I've looked at Forestry, Tough as Nails and other build.gradle files but each one does this in different ways. Does someone know what I'm missing? My build.gradle now looks like this: Spoiler buildscript { repositories { jcenter() maven { name = "forge" url = "http://files.minecraftforge.net/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle.forge' //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. sourceSets.main { java { srcDirs = ['src/main/java'] } resources { srcDirs = ['src/main/resources'] } } def mcVersion = "1.11.2" def spVersion = "0.1.0" version = "${mcVersion}-${spVersion}" group = "net.coolsimulations.SurvivalPlus" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "SurvivalPlus" sourceCompatibility = targetCompatibility = "1.8" // Need this here so eclipse task generates correctly. compileJava { sourceCompatibility = targetCompatibility = "1.8" } minecraft { version = "1.11.2-13.20.1.2454" runDir = "run" // the mappings can be changed at any time, and must be in the following format. // snapshot_YYYYMMDD snapshot are built nightly. // stable_# stables are built at the discretion of the MCP team. // Use non-default mappings at your own risk. they may not always work. // simply re-run your setup task after changing the mappings to update your workspace. mappings = "snapshot_20161220" // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } // Keep a list of main mod files/directories for easy jar packing ext.coreFiles = ['net/coolsimulations/SurvivalPlus/core/**', 'assets/sp/**'] // Keep a list of core files/directories for easy jar packing ext.apiFiles = ['net/coolsimulations/SurvivalPlus/api/**'] dependencies { // you may put jars on which you depend on in ./libs // or you may define them like so.. //compile "some.group:artifact:version:classifier" //compile "some.group:artifact:version" // real examples //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env // the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. //provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' // the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided, // except that these dependencies get remapped to your current MCP mappings //deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev' //deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev' // for more info... // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html } processResources { // this will ensure that this task is redone when the versions change. inputs.property "version", project.version inputs.property "mcversion", project.minecraft.version // replace stuff in mcmod.info, nothing else from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' // replace version and mcversion expand 'version':project.version, 'mcversion':project.minecraft.version } // copy everything else except the mcmod.info from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } } jar { // Add necessary files, remove unnecessary ones. includes.addAll(project.ext.coreFiles) includes.addAll(project.ext.apiFiles) includes.addAll('mcmod.info') //includes.addAll('LICENSE.txt') } task packApi(type: Jar, dependsOn: "classes") { // Jar will always be updated outputs.upToDateWhen {false} // Set the jar's base name baseName = "SurvivalPlus-API" from (sourceSets.main.output) { // Add necessary files, remove unnecessary ones. includes.addAll(project.ext.apiFiles) //includes.addAll('LICENSE.txt') excludes.addAll(project.ext.coreFiles) excludes.addAll('**/*.info') excludes.addAll('assets') } }
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.