* Added templating to the vendordep json. * Fixed driver reference * Moved copy to an artifact. * Moved vendordep generation to `$buildDir/repos/` and added zip task. Maven publication commented out. * Fixed zip function, uncommented maven publishing for vendordep. * Update publish.gradle * Change basename of vendordepJson Added deps fix. --------- Co-authored-by: thenetworkgrinch <thenetworkgrinch@users.noreply.github.com>
247 lines
6.0 KiB
Groovy
247 lines
6.0 KiB
Groovy
import org.apache.tools.ant.filters.FixCrLfFilter
|
|
import org.apache.tools.ant.filters.ReplaceTokens
|
|
|
|
apply plugin: 'maven-publish'
|
|
|
|
ext.licenseFile = files("$rootDir/LICENSE.txt")
|
|
|
|
def templateVendorFile = "ExampleVendorJson.json"
|
|
|
|
def pubVersion = '0.0.1'
|
|
|
|
def outputsFolder = file("$buildDir/outputs")
|
|
|
|
def versionFile = file("$outputsFolder/version.txt")
|
|
|
|
task outputVersions() {
|
|
description = 'Prints the versions of wpilib to a file for use by the downstream packaging project'
|
|
group = 'Build'
|
|
outputs.files(versionFile)
|
|
|
|
doFirst {
|
|
buildDir.mkdir()
|
|
outputsFolder.mkdir()
|
|
}
|
|
|
|
doLast {
|
|
versionFile.write pubVersion
|
|
}
|
|
}
|
|
|
|
task libraryBuild() {}
|
|
|
|
build.dependsOn outputVersions
|
|
|
|
task copyAllOutputs(type: Copy) {
|
|
destinationDir file("$buildDir/allOutputs")
|
|
from versionFile
|
|
dependsOn outputVersions
|
|
}
|
|
|
|
build.dependsOn copyAllOutputs
|
|
copyAllOutputs.dependsOn outputVersions
|
|
|
|
ext.addTaskToCopyAllOutputs = { task ->
|
|
copyAllOutputs.dependsOn task
|
|
copyAllOutputs.inputs.file task.archiveFile
|
|
copyAllOutputs.from task.archiveFile
|
|
}
|
|
|
|
def artifactGroupId = 'com.vendor.frc'
|
|
def baseArtifactId = 'Vendor'
|
|
def driverZipBaseName = "_GROUP_com_vendor_frc_ID_${baseArtifactId}-driver_CLS"
|
|
def zipBaseName = "_GROUP_com_vendor_frc_ID_${baseArtifactId}-cpp_CLS"
|
|
def javaBaseName = "_GROUP_com_vendor_frc_ID_${baseArtifactId}-java_CLS"
|
|
|
|
task cppHeadersZip(type: Zip) {
|
|
destinationDirectory = outputsFolder
|
|
archiveBaseName = zipBaseName
|
|
archiveClassifier = "headers"
|
|
|
|
from(licenseFile) {
|
|
into '/'
|
|
}
|
|
|
|
from('src/main/native/include') {
|
|
into '/'
|
|
}
|
|
}
|
|
|
|
task cppSourceZip(type: Zip) {
|
|
destinationDirectory = outputsFolder
|
|
archiveBaseName = zipBaseName
|
|
archiveClassifier = "sources"
|
|
|
|
from(licenseFile) {
|
|
into '/'
|
|
}
|
|
|
|
from('src/main/native/cpp') {
|
|
into '/'
|
|
}
|
|
}
|
|
|
|
task cppDriverHeadersZip(type: Zip) {
|
|
destinationDirectory = outputsFolder
|
|
archiveBaseName = driverZipBaseName
|
|
archiveClassifier = "headers"
|
|
|
|
from(licenseFile) {
|
|
into '/'
|
|
}
|
|
|
|
from('src/main/driver/include') {
|
|
into '/'
|
|
}
|
|
}
|
|
|
|
build.dependsOn cppHeadersZip
|
|
addTaskToCopyAllOutputs(cppHeadersZip)
|
|
build.dependsOn cppSourceZip
|
|
addTaskToCopyAllOutputs(cppSourceZip)
|
|
build.dependsOn cppDriverHeadersZip
|
|
addTaskToCopyAllOutputs(cppDriverHeadersZip)
|
|
|
|
task sourcesJar(type: Jar, dependsOn: classes) {
|
|
archiveClassifier = 'sources'
|
|
from sourceSets.main.allSource
|
|
}
|
|
|
|
task javadocJar(type: Jar, dependsOn: javadoc) {
|
|
archiveClassifier = 'javadoc'
|
|
from javadoc.destinationDir
|
|
}
|
|
|
|
task outputJar(type: Jar, dependsOn: classes) {
|
|
archiveBaseName = javaBaseName
|
|
destinationDirectory = outputsFolder
|
|
from sourceSets.main.output
|
|
}
|
|
|
|
task outputSourcesJar(type: Jar, dependsOn: classes) {
|
|
archiveBaseName = javaBaseName
|
|
destinationDirectory = outputsFolder
|
|
archiveClassifier = 'sources'
|
|
from sourceSets.main.allSource
|
|
}
|
|
|
|
task outputJavadocJar(type: Jar, dependsOn: javadoc) {
|
|
archiveBaseName = javaBaseName
|
|
destinationDirectory = outputsFolder
|
|
archiveClassifier = 'javadoc'
|
|
from javadoc.destinationDir
|
|
}
|
|
|
|
// Apply template variables from the vendordep file.
|
|
// Replaces ${VARIABLE} with VARIABLE: value in expand()
|
|
task vendordepJson() {
|
|
description = 'Builds the vendordep json file.'
|
|
group = 'Build'
|
|
outputs.file("$buildDir/repos/$templateVendorFile")
|
|
|
|
copy {
|
|
from templateVendorFile
|
|
into "$buildDir/repos/"
|
|
expand(version: pubVersion,
|
|
groupId: artifactGroupId,
|
|
artifactId: baseArtifactId)
|
|
}
|
|
}
|
|
|
|
task vendordepJsonZip(type: Zip) {
|
|
destinationDirectory = outputsFolder
|
|
archiveBaseName = "vendordepJson"
|
|
|
|
from("$buildDir/repos/$templateVendorFile") {
|
|
into '/'
|
|
}
|
|
dependsOn vendordepJson
|
|
}
|
|
|
|
artifacts {
|
|
archives sourcesJar
|
|
archives javadocJar
|
|
archives outputJar
|
|
archives outputSourcesJar
|
|
archives outputJavadocJar
|
|
}
|
|
|
|
addTaskToCopyAllOutputs(outputSourcesJar)
|
|
addTaskToCopyAllOutputs(outputJavadocJar)
|
|
addTaskToCopyAllOutputs(outputJar)
|
|
addTaskToCopyAllOutputs(vendordepJsonZip)
|
|
|
|
build.dependsOn outputSourcesJar
|
|
build.dependsOn outputJavadocJar
|
|
build.dependsOn outputJar
|
|
build.dependsOn vendordepJsonZip
|
|
|
|
libraryBuild.dependsOn build
|
|
|
|
def releasesRepoUrl = "$buildDir/repos/releases"
|
|
|
|
publishing {
|
|
repositories {
|
|
maven {
|
|
|
|
url = releasesRepoUrl
|
|
}
|
|
}
|
|
}
|
|
|
|
task cleanReleaseRepo(type: Delete) {
|
|
delete releasesRepoUrl
|
|
}
|
|
|
|
tasks.matching {it != cleanReleaseRepo}.all {it.dependsOn cleanReleaseRepo}
|
|
|
|
model {
|
|
publishing {
|
|
def taskList = createComponentZipTasks($.components, ['Vendor'], zipBaseName, Zip, project, includeStandardZipFormat)
|
|
|
|
def driverTaskList = createComponentZipTasks($.components, ['VendorDriver'], driverZipBaseName, Zip, project, includeStandardZipFormat)
|
|
|
|
publications {
|
|
cpp(MavenPublication) {
|
|
taskList.each {
|
|
artifact it
|
|
}
|
|
artifact cppHeadersZip
|
|
artifact cppSourceZip
|
|
|
|
artifactId = "${baseArtifactId}-cpp"
|
|
groupId artifactGroupId
|
|
version pubVersion
|
|
}
|
|
driver(MavenPublication) {
|
|
driverTaskList.each {
|
|
artifact it
|
|
}
|
|
artifact cppDriverHeadersZip
|
|
|
|
artifactId = "${baseArtifactId}-driver"
|
|
groupId artifactGroupId
|
|
version pubVersion
|
|
}
|
|
|
|
java(MavenPublication) {
|
|
artifact jar
|
|
artifact sourcesJar
|
|
artifact javadocJar
|
|
|
|
artifactId = "${baseArtifactId}-java"
|
|
groupId artifactGroupId
|
|
version pubVersion
|
|
}
|
|
|
|
vendordep(MavenPublication) {
|
|
artifact vendordepJsonZip
|
|
|
|
artifactId = "${baseArtifactId}-vendordep"
|
|
groupId artifactGroupId
|
|
version pubVersion
|
|
}
|
|
}
|
|
}
|
|
}
|