235 lines
6.4 KiB
Groovy
235 lines
6.4 KiB
Groovy
buildscript {
|
|
repositories {
|
|
maven { url = 'https://files.minecraftforge.net/maven' }
|
|
jcenter()
|
|
mavenCentral()
|
|
}
|
|
dependencies {
|
|
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
id 'eclipse'
|
|
id 'maven-publish'
|
|
}
|
|
|
|
apply plugin: 'net.minecraftforge.gradle'
|
|
|
|
def getGitRef() {
|
|
try {
|
|
def stdout = new ByteArrayOutputStream()
|
|
exec {
|
|
commandLine 'git', 'rev-parse', '--short', 'HEAD'
|
|
standardOutput = stdout
|
|
}
|
|
return stdout.toString().trim()
|
|
} catch (Throwable ignored) {
|
|
return "unknown"
|
|
}
|
|
}
|
|
|
|
String semver = "${version_major}.${version_minor}.${version_patch}"
|
|
|
|
String build_number = System.getenv("PROMOTED_NUMBER");
|
|
if (build_number == null)
|
|
build_number = System.getenv("BUILD_NUMBER")
|
|
if (build_number == null)
|
|
build_number = getGitRef()
|
|
|
|
version = "${semver}+${build_number}"
|
|
group = mod_group
|
|
archivesBaseName = "${mod_name}-MC${minecraft_version}"
|
|
|
|
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
|
|
compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaVersion.VERSION_1_8
|
|
|
|
configurations {
|
|
embed
|
|
implementation.extendsFrom embed
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven { url "http://dvs1.progwml6.com/files/maven" } // JEI
|
|
maven { url "http://maven.cil.li/" } // Sedna
|
|
}
|
|
|
|
dependencies {
|
|
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
|
|
|
|
compileOnly 'org.jetbrains:annotations:16.0.2'
|
|
|
|
embed 'li.cil.ceres:ceres:0.0.2+'
|
|
embed 'li.cil.sedna:sedna:0.0.1+'
|
|
embed 'li.cil.sedna:sedna-buildroot:0.0.1+'
|
|
embed 'org.reflections:reflections:0.9.12' // TODO Need to figure out how to make embed recursive.
|
|
|
|
compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}:api")
|
|
runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}")
|
|
|
|
testImplementation "org.mockito:mockito-core:2.+"
|
|
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
|
|
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
|
|
|
|
testImplementation 'li.cil.ceres:ceres:0.0.2+'
|
|
}
|
|
|
|
processResources {
|
|
from(sourceSets.main.resources.srcDirs) {
|
|
include 'META-INF/mods.toml'
|
|
|
|
expand([
|
|
'mod_id' : mod_id,
|
|
'mod_version' : version,
|
|
'mod_name' : mod_name,
|
|
'mod_url' : mod_url,
|
|
'mod_issues_url' : mod_issues_url,
|
|
'forge_version_min' : forge_version_min,
|
|
'minecraft_version_min': minecraft_version_min
|
|
])
|
|
}
|
|
}
|
|
|
|
minecraft {
|
|
mappings channel: mappings_channel, version: mappings_version
|
|
|
|
runs {
|
|
client {
|
|
workingDirectory project.file('run')
|
|
|
|
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
|
property 'forge.logging.console.level', 'info'
|
|
|
|
mods {
|
|
oc2 {
|
|
source sourceSets.main
|
|
}
|
|
}
|
|
}
|
|
|
|
server {
|
|
workingDirectory project.file('run')
|
|
|
|
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
|
property 'forge.logging.console.level', 'info'
|
|
|
|
mods {
|
|
oc2 {
|
|
source sourceSets.main
|
|
}
|
|
}
|
|
}
|
|
|
|
data {
|
|
workingDirectory project.file('run')
|
|
|
|
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
|
property 'forge.logging.console.level', 'info'
|
|
|
|
args '--mod', 'oc2', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources')
|
|
forceExit false
|
|
|
|
mods {
|
|
oc2 {
|
|
source sourceSets.main
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task copyData(type: Copy) {
|
|
dependsOn 'runData'
|
|
from 'src/generated/resources'
|
|
into 'src/main/resources'
|
|
exclude '.cache'
|
|
}
|
|
|
|
task generateMetaFiles {
|
|
ext.embeddedFiles = []
|
|
doLast {
|
|
file("${buildDir}/dependencyMeta/").deleteDir()
|
|
configurations.embed.resolvedConfiguration.resolvedArtifacts.each {
|
|
// Don't embed anything Minecraft provides anyway.
|
|
if (configurations.minecraft.resolvedConfiguration.resolvedArtifacts.contains(it)) {
|
|
return
|
|
}
|
|
|
|
ext.embeddedFiles.add(it.file)
|
|
|
|
def metaFile = file("${buildDir}/dependencyMeta/${it.file.name}.meta")
|
|
metaFile.parentFile.mkdirs()
|
|
def artifactRef = it.moduleVersion.toString()
|
|
if (it.classifier != null) {
|
|
artifactRef += ":${it.classifier}"
|
|
}
|
|
metaFile.text = "Maven-Artifact: $artifactRef"
|
|
}
|
|
}
|
|
}
|
|
|
|
task embedFilesInJar {
|
|
dependsOn generateMetaFiles
|
|
doLast {
|
|
jar {
|
|
into('/') {
|
|
from generateMetaFiles.embeddedFiles
|
|
from "${buildDir}/dependencyMeta/"
|
|
}
|
|
manifest {
|
|
attributes([
|
|
"Specification-Title" : "oc2",
|
|
"Specification-Vendor" : "Sangar",
|
|
"Specification-Version" : "1",
|
|
"Implementation-Title" : project.name,
|
|
"Implementation-Version" : "${semver}",
|
|
"Implementation-Vendor" : "Sangar",
|
|
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
|
|
'ContainedDeps' : generateMetaFiles.embeddedFiles.collect { it.name }.join(' ')
|
|
])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
jar {
|
|
dependsOn embedFilesInJar
|
|
finalizedBy 'reobfJar'
|
|
}
|
|
|
|
task apiJar(type: Jar) {
|
|
from sourceSets.main.allSource
|
|
from sourceSets.main.output
|
|
classifier = 'api'
|
|
include 'li/cil/oc2/api/**'
|
|
}
|
|
|
|
task javadocJar(type: Jar, dependsOn: javadoc) {
|
|
from javadoc.destinationDir
|
|
classifier 'javadoc'
|
|
}
|
|
|
|
artifacts {
|
|
archives javadocJar
|
|
archives apiJar
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
mavenJava(MavenPublication) {
|
|
artifact jar
|
|
artifact javadocJar
|
|
artifact apiJar
|
|
}
|
|
}
|
|
repositories {
|
|
maven {
|
|
url System.getenv("MAVEN_PATH")
|
|
}
|
|
}
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
} |