continuous-integration - Gradle发布系统任务-在子项目上调用uploadArchives

标签 continuous-integration gradle

为了发布我的系统,我正在创建一个发布器项目,该项目针对许多其他项目调用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/

相关文章:

heroku - CI/CD Gitlab 部署失败 - 未找到 dbl 命令

gradle - 任务 ':app:checkDebugDuplicateClasses'的执行失败

android - 升级到Gradle 4.1时发生ClassCastException

gradle - 如何为 Gradle 依赖项 {} block 编写扩展方法

gradle - 如何在build.gradle中以编程方式从具有动态版本的依赖项中获取解析版本(静态版本)?

docker - Gitlab 部署脚本 - envsubst : command not found

xcode - 将环境变量传递给 XCUITest

ant - Jenkins CI 为长进程构建超时

c# - 在 Gitlab CI 管道内运行时,dotnet-reportgenerator 无法找到任何coverage.cobertura.xml

Gradle 的 mustRunAfter/finalizedBy 仅用于特定任务?