gpt4 book ai didi

maven - 如何在两个 nexus 存储库 (jenkins) 之间移动 Artifact ?

转载 作者:行者123 更新时间:2023-12-03 18:35:30 25 4
gpt4 key购买 nike

我们使用 Jenkins + Gradle 脚本构建。
要将 Artifact 上传到 nexus,我们使用:

uploadArchives {
repositories {
mavenDeployer {
def auth = { authentication(userName: nexusUsername, password: nexusPassword) }
repository(url: rpmReleasesRepoUrl, auth)
pom.groupId = project.group
pom.version = project.version
pom.artifactId = project.product
}
}
}

我们需要一份工作,从一个 nexus 获取 Artifact 并将其上传到另一个 nexus。

你能建议什么是更好的方法吗,如果有任何有用的文章/例子(第一次看到 gradle/maven/nexus)?

最佳答案

1.Jenkins神器推广插件
这是一个非 gradle 解决方案,但您可以使用 this jenkins plugin在您的 jenkins 工作流程中,将您的构建二进制文件从一个 nexus 存储库提升到另一个。
2.使用命令行参数提供用于发布的repo URL

uploadArchives {
...
repository(url: project.getProperty('repoURL'), auth)
...
}
然后运行 ​​ gradle uploadArchives -PrepoURL=http://nexusurl根据需要使用不同的 nexus url。
3. 使用不同的任务发布到每个 repo
ext.repoURL=''

task publishToRepo1()<<{
repoURL = 'http://nexus1.url'
configureRepo(repoURL)
}
publishToRepo1.finalizedBy('uploadArchives')

task publishToRepo2()<<{
repoURL = 'http://nexus2.url'
configureRepo(repoURL)
}
publishToRepo2.finalizedBy('uploadArchives')

def configureRepo(url){
uploadArchives.repositories {
mavenDeployer {
def auth = { authentication(userName: nexusUsername, password: nexusPassword) }
repository(url: url, auth)
pom.groupId = project.group
pom.version = project.version
pom.artifactId = project.name
}
}
}

uploadArchives {
doFirst{
if (!repoURL){
println "Please use publishToRepo1 or publishToRepo1 to publish"
throw new GradleException('use of uploadArchives is restricted!')
}
}
}
如果 uploadArchives,这将导致 gradle 构建失败直接使用消息调用以使用 publishToRepo1 或 publishToRepo2。直接调用这些任务将调用 uploadArchives 并配置适当的 repo url。

关于maven - 如何在两个 nexus 存储库 (jenkins) 之间移动 Artifact ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919558/

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