gpt4 book ai didi

gradle - 通过bamboo将gradle项目部署到nexus

转载 作者:行者123 更新时间:2023-12-02 06:51:28 25 4
gpt4 key购买 nike

我有一个带有 gradle 的 java 项目,我使用 Bamboo 作为我的 CI/CD。我的构建计划制作了 jar,我的部署计划(应该)将 jar 部署到 nexus。我的构建工作完美,并创建了工件(jar、build.gradle 文件、gradle.properties 文件和 gradle.settings文件)。

当我想运行我的部署计划时,我在bamboo 中运行uploadArchives 命令。此命令还使 jar 命令运行,这会破坏我的 jar(使其变为 261 字节)。我找到的解决方案只是告诉gradle跳过jar命令(使用-x jar),但我觉得有更好的解决方案。

gralde 中有一个特殊的命令可以让它工作吗?或者有没有办法告诉 gradle 运行特定命令而不需要前面的命令?也许类似于 Maven 命令来上传第 3 方库?我到处都找过了,但没有找到。

谢谢!

最佳答案

这就是 Gradle 的工作方式,并且取决于您如何配置构建。但一般来说,您可以创建一个仅发布文件的任务(它不依赖于任何内容)。您需要使用maven-publish插件。例如。让我们考虑以下配置

apply plugin: 'maven-publish'

group= "gradle-test"
version = "1.0-SNAPSHOT"
task produce {
ext {
outputFile = file("$buildDir/file.txt")
}
outputs.file outputFile
doLast {
outputFile << "Hello World!"
}
}

task zipGreeting(type: Zip) {
from produce.outputs
}

publishing {
publications {
newGreeting(MavenPublication) {
artifact zipGreeting
}
oldGreeting(MavenPublication) {
artifact {
produce.outputFile
}
}
}
}

通过以下配置任务 publishNewGreetingPublicationToMavenLocal 依赖于 zipGreetingproduct (因为它依赖于 product 的输出),所以如果它们的输出不是最新的,最后 Gradle 将调用它们(我想这发生在您的 jar 任务中 -> Gradle 最新检查取决于本地 .gradle缓存目录)

但是 publishOldGreetingPublicationToMavenLocal 对任何其他任务没有显式依赖,因此如果您调用 gradlepublishOldGreetingPublicationToMavenLocal。 Gradle 将尝试找到提到的文件并将其上传到 Maven Local。显然,如果文件不存在,它将失败。

关于gradle - 通过bamboo将gradle项目部署到nexus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47906349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com