126 lines
4.0 KiB
Groovy
126 lines
4.0 KiB
Groovy
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
|
|
|
plugins {
|
|
id "java"
|
|
id "com.gradleup.shadow"
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
options.release = 8
|
|
options.encoding = "UTF-8"
|
|
}
|
|
|
|
configurations {
|
|
testImplementation.extendsFrom compileOnly
|
|
}
|
|
|
|
dependencies {
|
|
compileOnly "org.apache.logging.log4j:log4j-api:${rootProject.log4j_version}"
|
|
testImplementation "junit:junit:4.13"
|
|
}
|
|
|
|
java {
|
|
withSourcesJar()
|
|
}
|
|
|
|
task createReleaseApiJar(type: ShadowJar) {
|
|
|
|
mustRunAfter sourcesJar
|
|
dependsOn shadowJar
|
|
|
|
// the compiled "-all" jar is used since it's available at the time this task is run
|
|
def compiledJarPath = "build/libs/DistantHorizonsApi-${rootProject.api_version}-all.jar"
|
|
def compiledJarFile = file(compiledJarPath)
|
|
|
|
// doFirst is so these only run when the task is actually executed
|
|
doFirst {
|
|
System.out.println("Adding class files from: \n" +
|
|
"[" + compiledJarPath + "] to source API jar: \n" +
|
|
"[" + shadowJar.archiveFile.get().asFile + "]")
|
|
|
|
// Validate the input JAR file
|
|
if (!compiledJarFile.exists()) {
|
|
throw new GradleException("Compiled JAR file not found: [${compiledJarFile}]")
|
|
}
|
|
}
|
|
|
|
archiveFileName.set("DistantHorizonsApi-${rootProject.api_version}-combined.jar") // jar name
|
|
destinationDirectory = file('build/libs/') // jar location
|
|
|
|
// Set the input JAR files to be combined
|
|
from sourceSets.main.allJava
|
|
from {
|
|
project.configurations.shadow.collect { it.isDirectory() ? it : zipTree(it) }
|
|
}
|
|
|
|
// add the class files
|
|
from zipTree(compiledJarFile)
|
|
|
|
// alternative method to Include the source files in the combined JAR
|
|
// and/or see which files are being included
|
|
eachFile { file ->
|
|
// can be set to true for debugging
|
|
def useAlternateEmbedMethod = false
|
|
def showFileEmbedding = false
|
|
|
|
if (showFileEmbedding || useAlternateEmbedMethod) {
|
|
System.out.println("attempting to add file: " + file)
|
|
|
|
def relativePath = file.relativePath.pathString
|
|
if (relativePath.endsWith('.class')) {
|
|
System.out.println("class file: " + relativePath)
|
|
def sourceFile = file.file.parentFile.resolveSibling('src/main/java/' + relativePath.replace('.class', '.java'))
|
|
if (sourceFile.exists()) {
|
|
System.out.println("adding source file: " + sourceFile)
|
|
if (useAlternateEmbedMethod) {
|
|
file.withInputStream { inputStream ->
|
|
copy {
|
|
from(inputStream)
|
|
into(relativePath.replace('.class', '.java'))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
System.out.println('missing source file: ' + sourceFile)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
// always create a combined jar for easy deployment
|
|
assemble.dependsOn(createReleaseApiJar)
|
|
|
|
shadowJar {
|
|
// required for basic shadowJar setup
|
|
configurations = [project.configurations.shadow]
|
|
}
|
|
|
|
javadoc {
|
|
options {
|
|
// Don't log warnings.
|
|
// There are a lot of warnings related to missing @param and @return javadocs
|
|
// that aren't necessary and would clutter up said javadocs.
|
|
// For more info see: https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html
|
|
addStringOption('Xdoclint:all,-missing', '-quiet')
|
|
}
|
|
}
|
|
|
|
// set the jar name
|
|
def configureJar = { task ->
|
|
// outputs in the format:
|
|
// "DistantHorizonsApi-6.0.0.jar"
|
|
// "DistantHorizonsApi-6.0.0-sources.jar"
|
|
task.archiveBaseName = rootProject.api_name
|
|
task.archiveVersion = rootProject.api_version
|
|
}
|
|
configureJar(tasks.named("jar").get())
|
|
configureJar(tasks.named("sourcesJar").get())
|
|
configureJar(tasks.named("shadowJar").get())
|
|
|
|
|