Files
allwpilib/shared/jni/publish.gradle
2018-04-29 13:29:07 -07:00

137 lines
3.5 KiB
Groovy

apply plugin: 'maven-publish'
apply plugin: 'edu.wpi.first.wpilib.versioning.WPILibVersioningPlugin'
if (!hasProperty('releaseType')) {
WPILibVersion {
releaseType = 'dev'
}
}
def pubVersion
if (project.hasProperty("publishVersion")) {
pubVersion = project.publishVersion
} else {
pubVersion = WPILibVersion.version
}
def outputsFolder = file("$buildDir/outputs")
def baseArtifactId = nativeName
def artifactGroupId = "edu.wpi.first.${nativeName}"
def zipBaseName = "_GROUP_edu_wpi_first_${nativeName}_ID_${nativeName}-cpp_CLS"
def jniBaseName = "_GROUP_edu_wpi_first_${nativeName}_ID_${nativeName}-jni_CLS"
def licenseFile = file("$rootDir/license.txt")
task cppSourcesZip(type: Zip) {
destinationDir = outputsFolder
baseName = zipBaseName
classifier = "sources"
duplicatesStrategy = 'exclude'
from(licenseFile) {
into '/'
}
from('src/main/native/cpp') {
into '/'
}
model {
components {
it.all {
if (it in getJniSpecClass()) {
it.jniHeaderLocations.each {
dependsOn it.key
from(it.value) {
into '/jni'
}
}
}
}
}
}
}
task cppHeadersZip(type: Zip) {
destinationDir = outputsFolder
baseName = zipBaseName
classifier = "headers"
from(licenseFile) {
into '/'
}
from('src/main/native/include') {
into '/'
}
}
artifacts {
archives cppHeadersZip
archives cppSourcesZip
}
addTaskToCopyAllOutputs(cppSourcesZip)
addTaskToCopyAllOutputs(cppHeadersZip)
model {
publishing {
def taskList = createComponentZipTasks($.components, nativeName, zipBaseName, Zip, project, includeStandardZipFormat)
def allTask
if (!project.hasProperty('jenkinsBuild')) {
allTask = createAllCombined(taskList, nativeName, zipBaseName, Zip, project)
}
def jniTaskList = createComponentZipTasks($.components, "${nativeName}JNI", jniBaseName, Jar, project, { task, value ->
value.each { binary ->
if (binary.buildable) {
if (binary instanceof SharedLibraryBinarySpec) {
task.dependsOn binary.buildTask
task.from(binary.sharedLibraryFile) {
into getPlatformPath(binary)
}
}
}
}
})
def allJniTask
if (!project.hasProperty('jenkinsBuild')) {
allJniTask = createAllCombined(jniTaskList, "${nativeName}JNI", jniBaseName, Jar, project)
}
publications {
cpp(MavenPublication) {
taskList.each {
artifact it
}
artifact cppHeadersZip
artifact cppSourcesZip
if (!project.hasProperty('jenkinsBuild')) {
artifact allTask
}
artifactId = "${baseArtifactId}-cpp"
groupId artifactGroupId
version pubVersion
}
jni(MavenPublication) {
jniTaskList.each {
artifact it
}
if (!project.hasProperty('jenkinsBuild')) {
artifact allJniTask
}
artifactId = "${baseArtifactId}-jni"
groupId artifactGroupId
version pubVersion
}
}
}
}