gpt4 book ai didi

java - Jenkins - 使用通配符执行 shell 命令

转载 作者:搜寻专家 更新时间:2023-10-31 20:17:57 30 4
gpt4 key购买 nike

我试图让 Jenkins 执行一个 shell 命令,但仍然允许使用通配符。这是我正在尝试做的引用:

mvn deploy:deploy-file -Dpackaging=jar -DrepositoryId=snapshots -Durl=http://nexus.example.net/content/repositories/snapshots -DpomFile=Spigot/Spigot-Server/pom.xml -Dfile=Spigot/Spigot-Server/target/spigot-*.jar

我需要能够通过上述命令部署这个 jar,因为该项目的 git 存储库不是我所有或操作的,所以我需要能够将它直接部署到我自己的 Nexus 实例。为了确保它支持编译后的 jar 的所有可能版本,我必须使用通配符。不幸的是,当 Jenkins 尝试执行该命令时,它会按字面意思使用通配符。我真的不确定如何解决这个问题,如果您能提供任何帮助,我将不胜感激。谢谢!

最佳答案

如果它是一个简单的单个 .jar 文件,试试这个:

mvn deploy:deploy-file -Dpackaging=jar -DrepositoryId=snapshots -Durl=http://nexus.example.net/content/repositories/snapshots -DpomFile=Spigot/Spigot-Server/pom.xml -Dfile=$(find Spigot/Spigot-Server/target/ -name 'spigot-*.jar')

如果是多个文件,就复杂一点:

ma​​ven deploy-file 参数 files, classifierstypes 用于部署多个相同 (groupId, artifactId, version) 下的 Artifact - 例如 .jar-sources.jar

即使对于那个用例,语法也有些违反直觉 - 您必须对第一个 Artifact 使用file=file1.jar,然后是files=file1 -sources.jar,file1-test-sources.zip,.. 用于rest,同时使用classifier/classifiers(和packaging/types ) 以相同的方式(位置)指定您上传的每个 Artifact 的分类器/类型。

如果您的用例是上传不同版本的 Artifact ,您将需要为每个版本调用一次 maven 部署文件

您还可以考虑一些替代方案:

  1. (取决于 Artifact 的数量以及新 Artifact 出现的频率)- 手动将这些 Artifact 上传到 Nexus

  2. 让您的 Nexus 代理另一个 Nexus 存储库 来提供这些 Artifact 。

关于java - Jenkins - 使用通配符执行 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36661995/

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