为了发布我的系统,我正在创建一个发布器项目,该项目针对许多其他项目调用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更改为上述格式,以便系统正确地将pom放在一起,并成功完成uploadArchives任务。
最佳答案
假设所有子项目都有一个uploadArchives
任务:
task releaseSystem {
dependsOn { subprojects.uploadArchives }
}
请注意,这不会运行子项目的测试。
关于continuous-integration - Gradle发布系统任务-在子项目上调用uploadArchives,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17603141/