通过 bamboo 将 gradle 项目部署到 nexus
Deploy gradle project to nexus via bamboo
我有一个 java 项目 gradle,我使用 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 命令一样上传 3rd 方库?我到处都找遍了,没找到。
太棒了!
这就是 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
依赖于zipGreeting
和produce
(因为它依赖于produce
的输出)所以最后Gradle 如果它们的输出不是最新的,将调用它们(我想这发生在你的 jar
任务中 -> Gradle 最新检查取决于本地 .gradle
缓存目录)
但是 publishOldGreetingPublicationToMavenLocal
不明确依赖于任何其他任务,因此如果您调用 gradle publishOldGreetingPublicationToMavenLocal
。 Gradle 将尝试找到提到的文件并将其上传到 Maven Local。显然,如果文件不存在,它将失败。
我有一个 java 项目 gradle,我使用 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 命令一样上传 3rd 方库?我到处都找遍了,没找到。
太棒了!
这就是 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
依赖于zipGreeting
和produce
(因为它依赖于produce
的输出)所以最后Gradle 如果它们的输出不是最新的,将调用它们(我想这发生在你的 jar
任务中 -> Gradle 最新检查取决于本地 .gradle
缓存目录)
但是 publishOldGreetingPublicationToMavenLocal
不明确依赖于任何其他任务,因此如果您调用 gradle publishOldGreetingPublicationToMavenLocal
。 Gradle 将尝试找到提到的文件并将其上传到 Maven Local。显然,如果文件不存在,它将失败。