为了发布我的系统,我正在创建一个发布器项目,它为许多其他项目调用uploadArchives。
在我的项目中,我有以下文件:
settings.gradle
include '../proj-a', '../proj-b'build.gradle
task releaseSystem() {
// what goes here?
}releaseSystem任务的内容应该是什么,以便我可以调用gradle releaseSystem并让它为我的每个子项目运行uploadArchives?
我尝试了许多选择,但到目前为止都没有成功。
感谢您所能提供的任何见解。
答案
gradle为我的问题提供了优雅的解决方案,给我留下了深刻的印象。这是我的最后解决方案(正如Peter在下面指出的):
settings.gradle
include 'proj-a', 'proj-b'
project (':proj-a').projectDir = new File(settingsDir, '../proj-a')
project (':proj-b').projectDir = new File(settingsDir, '../proj-b')build.gradle
task releaseSystem() {
dependsOn {
[
subprojects.build,
subprojects.uploadArchives
]
}
}注意,由于我的存储库是maven存储库,所以当我最初在我的settings.gradle中包含‘./proj-a’时,它使用artifactId ../proj-a生成了poms,这是无效的。我必须将settings.gradle更改为上面的格式,这样系统才能正确地将poms放在一起,uploadArchives任务才能成功完成。
发布于 2013-07-12 06:12:38
假设所有子项目都有一个uploadArchives任务:
task releaseSystem {
dependsOn { subprojects.uploadArchives }
}请注意,这不会运行子项目的测试。
https://stackoverflow.com/questions/17603141
复制相似问题