apply plugin: 'maven-publish' def outputsFolder = file("$buildDir/outputs") def baseArtifactId = nativeName def artifactGroupId = "org.wpilib.${nativeName}" def zipBaseName = makeZipBaseName(artifactGroupId, "${baseArtifactId}-cpp") def licenseFile = file("$rootDir/license.md") task cppSourcesZip(type: Zip) { destinationDirectory = outputsFolder archiveBaseName = zipBaseName archiveClassifier = "sources" from(licenseFile) { into '/' } from('src/main/native/cpp') { into '/' } from("$buildDir/generated/cpp") { into '/' } from("src/generated/main/native/cpp") { into '/' } } task cppHeadersZip(type: Zip) { destinationDirectory = outputsFolder archiveBaseName = zipBaseName archiveClassifier = "headers" from(licenseFile) { into '/' } ext.includeDirs = [ project.file('src/main/native/include'), project.file('src/generated/main/native/include') ] ext.includeDirs.each { from(it) { into '/' } } } artifacts { tasks.named("assemble") { dependsOn(cppHeadersZip) dependsOn(cppSourcesZip) } } addTaskToCopyAllOutputs(cppSourcesZip) addTaskToCopyAllOutputs(cppHeadersZip) model { publishing { def taskList = createComponentZipTasks($.components, [nativeName], zipBaseName, Zip, project, includeStandardZipFormat) publications { cpp(MavenPublication) { taskList.each { artifact it } artifact cppHeadersZip artifact cppSourcesZip artifactId = "${baseArtifactId}-cpp" groupId = artifactGroupId version = wpilibVersioning.version.get() } } } }