How can I package a native library into a distribution zip?

(Heiko B) #1


I am building native libraries to be used in other projects. Since there are no native publishing mechanism / plugins so far I create something for myself using the distribution and maven-publish plugin. It looks like this:

tasks.whenTaskAdded { addedTask ->
  if ('create') && ('StaticLibrary')))
    def artifactName =

    distributions.create(artifactName) { dist ->
      contents {
        from addedTask
      delivery.dependsOn "${}DistZip"
    publishing.publications.create(artifactName, MavenPublication ) { publication ->
      artifactId artifactName
      // some todo

When tasks are created it checks for the name ‘create…StaticLibrary’ and adds an entry to distributions and publications. This basically works.

My problem is that I did not manage to get the exported headers into the package. I can hard-code it but I would like to get it from the respective component spec, e.g.

googletest(NativeLibrarySpec) {
      sources {
        cpp {
          source {
            srcDir "googletest/googletest/src"
            include "*.cc"
            exclude ""
          exportedHeaders {
            srcDir "googletest/googletest/include"

How can I add the files covered by the exportedHeaders spec to my distribution? Do I again have to “string-match” for the respective component? (If yes, how? I have not found it in the object model. :frowning: )

Or, in case this approach does make much sense to you … is there a much cleaner or simpler way - preferably with standard plugins?

Thank you!