为了发布我的系统,我正在创建一个发布者项目,为许多其他项目调用uploadArchives。
在我的项目中,我有以下文件:
settings.gradle
include '../proj-a', '../proj-b'
的build.gradle
task releaseSystem() {
// what goes here?
}
releaseSystem任务的内容应该是什么,我可以调用gradle releaseSystem
并让它为每个子项目运行uploadArchives?
我尝试了很多选项,但到目前为止还没有成功。
感谢您提供的任何见解。
ANSWER
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任务成功完成。
答案 0 :(得分:2)
假设所有子项目都有uploadArchives
任务:
task releaseSystem {
dependsOn { subprojects.uploadArchives }
}
请注意,这不会运行子项目的测试。