Hi, I’m pretty new to Gradle, and even newer to the C plugin.
I have a static JNI library project which I’m migrating from Maven (with nar plugin) to Gradle (with c plugin).
My Gradle version generates a .lib and a .jar, which both get published to Artifactory - so far, so good. The .jar seems to get picked up automatically by the artifactory plugin, which is great, and the .lib gets there because I have
artifacts {
archives file("${buildDir}/binaries/myLibStaticLibrary/windows_x86/MyLib.lib")
}
artifactoryPublish {
publishConfigs('archives')
}
The Maven/nar version also publishes a MyLib-x.y-SNAPSHOT-noarch.nar, which contains all my exported headers, for use by downstream projects. (Some are under version control, others are auto-generated by javah - I don’t know how relevant that is.)
In build.gradle, I have
sources {
MyLib {
c {
source {
srcDir "src/main/c"
include "win/*.c"
include "*.c"
}
exportedHeaders {
srcDirs "src/main/include/", "build/generated/"
}
}
}
}
and when I build, it checks out headers from SCM into src/main/include and generates the JNI headers into build/generated.
The problem now is that I don’t know the best practice for publishing my exported headers. Also, although I think I know what ‘exportedHeaders’ is intended to mean, I’m not sure what it actually does. Presumably I should I use it somehow to produce another artifact for artifactoryPublish, but I can’t seem to find the right syntax. I’m not even sure what the artifact should sensibly be - a zip, or something else.
Does anyone who’s done this sort of thing before have any tips?