mirror of
https://github.com/MinecraftForge/MinecraftForge
synced 2026-08-22 04:26:10 -04:00
These are optional libraries that are only loaded when requested by mods. Includes new ReadOnlyInMemoryFileSystem to improve performance of JarInJar parsing.
89 lines
3.1 KiB
Groovy
89 lines
3.1 KiB
Groovy
import net.minecraftforge.forge.tasks.CleanProperties
|
|
|
|
apply plugin: 'eclipse'
|
|
apply plugin: 'idea'
|
|
apply plugin: 'net.minecraftforge.gradleutils'
|
|
|
|
group = 'net.minecraftforge'
|
|
version = VERSION
|
|
println("Version: $version")
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven gradleutils.forgeMaven
|
|
maven gradleutils.minecraftLibsMaven
|
|
//mavenLocal()
|
|
}
|
|
|
|
tasks.withType(Javadoc).configureEach {
|
|
options.tags = [
|
|
'apiNote:a:<em>API Note:</em>',
|
|
'implSpec:a:<em>Implementation Requirements:</em>',
|
|
'implNote:a:<em>Implementation Note:</em>'
|
|
]
|
|
options.addStringOption('Xdoclint:all,-missing', '-public')
|
|
}
|
|
|
|
// We need to write the manifest to the binary file so we have properly versioned packaged at dev time.
|
|
tasks.register('writeManifest') {
|
|
doLast {
|
|
if (plugins.findPlugin('net.minecraftforge.gradle.patcher')) // Forge project
|
|
universalJar.manifest.writeTo(rootProject.file('src/main/resources/META-INF/MANIFEST.MF'))
|
|
else
|
|
jar.manifest.writeTo(project.file('src/main/resources/META-INF/MANIFEST.MF'))
|
|
}
|
|
}
|
|
|
|
tasks.register('generateResources') {
|
|
dependsOn('writeManifest')
|
|
}
|
|
|
|
tasks.named('processResources') {
|
|
dependsOn(generateResources)
|
|
}
|
|
|
|
// Make sure out manifests get written before compiling the code, IDEA calls this task if you tell it to use the gradle build.
|
|
tasks.withType(JavaCompile).configureEach {
|
|
dependsOn 'generateResources'
|
|
dependsOn 'processResources' // Needed because we merge the output of this with the output of the compile task. And gradle detects downstream tasks using the output without a hard dep
|
|
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
|
|
options.warnings = false // Shutup deprecated for removal warnings
|
|
options.forkOptions.jvmArgs += '-Xmx6G' // Needed to make compiling faster, and not run out of heap space in some cases.
|
|
}
|
|
|
|
// Merge the resources and classes into the same directory. We'll need to split them at runtime because
|
|
// Minecraft and Forge are in the same sourceSet as they are inter dependent.. for now..
|
|
sourceSets.each {
|
|
def dir = layout.buildDirectory.dir("classes/java/$it.name")
|
|
it.output.resourcesDir = dir
|
|
it.java.destinationDirectory = dir
|
|
}
|
|
|
|
tasks.register('copyEclipseSettings') {
|
|
doLast {
|
|
rootProject.fileTree('ide/eclipse/template/.settings/').matching { include '**/*.prefs' }.each { file ->
|
|
def target = project.file('.settings/' + file.name)
|
|
def temp = new CleanProperties().load(file)
|
|
def exst = new CleanProperties().load(target)
|
|
exst.put('eclipse.preferences.version', '1')
|
|
exst.putAll(temp)
|
|
exst.store(target)
|
|
}
|
|
}
|
|
}
|
|
|
|
// TODO: [Gradle][IntelliJ] Auto trigger these tasks on import.
|
|
eclipse {
|
|
// Run everytime eclipse builds the code
|
|
//autoBuildTasks writeManifest
|
|
// Run when importing the project
|
|
synchronizationTasks generateResources, copyEclipseSettings, eclipseClasspath, eclipseProject
|
|
}
|
|
|
|
idea {
|
|
module {
|
|
// IntelliJ IDEA does not do this by itself anymore...
|
|
downloadJavadoc = true
|
|
downloadSources = true
|
|
}
|
|
}
|