Files
oc2r/build.gradle
2020-12-08 23:13:43 +01:00

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