我似乎无法让Gradle将多个工件发布到Maven存储库。它发布了一些,但不是全部,我不知道为什么。目标是调试&发布版本的静态库,为OS X和Windows(总共4个静态库)构建。 OS X库存储但Windows不存储。如果我修改过滤器闭包以便过滤掉OS X库,则不存储任何内容。
model {
buildTypes {
debug
release
}
platforms {
"osx-x86_64" {
operatingSystem "osx"
architecture "x86_64"
}
"windows-x86_64" {
operatingSystem "windows"
architecture "x86_64"
}
}
toolChains {
// OS X and Windows toolchains (Clang and Mingw) described here
// - they build the artifacts I wish to store ok
// just removed for clarity
}
} // end of model
libraries {
saveMe {}
}
nativeArtifacts {
libSaveMe {
from (libraries.saveMe) { it instanceof StaticLibraryBinary &&
(it.targetPlatform.name == "osx-x86_64" ||
it.targetPlatform.name == "windows-x86_64")
// if I make this closure on the line above something like:
// it instanceof StaticLibraryBinary && it.targetPlatform.name == "windows-x86_64"
// then nothing is saved in the Maven repo
}
}
}
publishing {
repositories {
maven {
credentials {
username = 'user'
password = 'password'
}
url "http://hostname.com/path/to/repo"
}
}
publications {
mavPub(MavenPublication) {
from nativeArtifacts.libSaveMe
}
}
}
我使用了一个非常好的外部插件(Gradle Native Artifacts Plugin,由Serge Gebhardt @sgeb(?)编写)但在我尝试理解他的代码之前(我在Gradle初学者) ),我以为我会问,看看是否有明显的错误。
我已经尝试将logger语句放入过滤器闭包中,我可以看到正在尝试调试/释放静态/共享库的所有可能组合,并且过滤器正确识别是否应该是库的真/假保存,但它没有成为Maven。
我是否可以在发布{}(或任务)中使用调试行来查看nativeArtifacts.libSaveMe集合的实际内容是什么?
答案 0 :(得分:0)
toolChains {
// OS X and Windows toolchains (Clang and Mingw) described here
// - they build the artifacts I wish to store ok
// just removed for clarity
}
实际上是真的。它不是。
发布任务由CI服务器完成,工具链无法在CI服务器上构建Windows工件,但它在本地计算机上工作(由于安装mingw工具链时出现配置错误) 。工具链失败是在没有错误的情况下发生的(除非在--debug中运行)因此对我来说是不可见的,因为工具链正在被不能创建工件的非Windows编译器所取代。