Jump to content

[1.11.2] Building New API Jar with Gradle


coolsim

Recommended Posts

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.

Link to comment
Share on other sites

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 by jredfox
Link to comment
Share on other sites

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')
}

 

Link to comment
Share on other sites

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')
    }
}

 

 

 

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.