import java.security.MessageDigest apply plugin: 'maven-publish' def outputsFolder = file("$buildDir/outputs") def baseArtifactId = nativeName def artifactGroupId = "org.wpilib.${nativeName}" def zipBaseName = makeZipBaseName(artifactGroupId, "${baseArtifactId}-cpp") ext.zipBaseName = zipBaseName def jniCvStaticBaseName = makeZipBaseName(artifactGroupId, "${nativeName}-jnicvstatic") def licenseFile = file("$rootDir/license.md") task cppSourcesZip(type: Zip) { destinationDirectory = outputsFolder archiveBaseName = zipBaseName archiveClassifier = "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) { destinationDirectory = outputsFolder archiveBaseName = zipBaseName archiveClassifier = "headers" from(licenseFile) { into '/' } ext.includeDirs = [ project.file('src/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, "${nativeName}JNIShared" ], zipBaseName, Zip, project, includeStandardZipFormat) publications { cpp(MavenPublication) { taskList.each { artifact it } artifact cppHeadersZip artifact cppSourcesZip artifactId = "${baseArtifactId}-cpp" groupId = artifactGroupId version = wpilibVersioning.version.get() } } if (project.hasProperty('cvStaticBuild') && project.getProperty('cvStaticBuild') == true) { def jniCvTaskList = createComponentZipTasks($.components, ["${nativeName}JNICvStatic"], jniCvStaticBaseName, Zip, project, { task, value -> value.each { binary -> if (binary.buildable) { if (binary instanceof SharedLibraryBinarySpec) { task.dependsOn binary.tasks.link task.inputs.file(binary.sharedLibraryFile) task.from(binary.sharedLibraryFile) { into nativeUtils.getPlatformPath(binary) + '/shared' } def sharedPath = binary.sharedLibraryFile.absolutePath sharedPath = sharedPath.substring(0, sharedPath.length() - 4) task.from(new File(sharedPath + '.pdb')) { into nativeUtils.getPlatformPath(binary) + '/shared' } } } } }) publications { jniCvStatic(MavenPublication) { jniCvTaskList.each { artifact it } artifactId = "${baseArtifactId}-jnicvstatic" groupId = artifactGroupId version = wpilibVersioning.version.get() } } } } }