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

mat*_*ick 5 java shell maven jenkins

我试图让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
Run Code Online (Sandbox Code Playgroud)

我需要能够通过上面的命令部署这个jar,因为该项目的git存储库不是由我拥有或操作的,所以我需要能够将它直接部署到我自己的Nexus实例.为了确保它将支持编译jar的所有可能版本,我必须使用外卡.不幸的是,当Jenkins尝试执行命令时,它会逐字地采用通配符.我真的不知道如何解决这个问题,我将不胜感激.谢谢!

Bor*_*lić 2

如果它是一个简单的单个 .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')
Run Code Online (Sandbox Code Playgroud)

如果是多个文件,那就有点复杂了:

当您想要在同一(groupId、artifactId、version)下部署多个工件时,使用maven部署文件参数filesclassifierstypes - 例如.jar-sources.jar

即使对于该用例,语法也有些违反直觉 - 您必须对第一个工件使用file = file1.jar,然后对其余工件使用files=file1-sources.jar,file1-test-sources.zip,..,而以相同的方式(位置)使用 分类器/分类器(和包装/类型)来指定您正在上传的每个工件的分类器/类型。

如果您的用例正在上传不同版本的工件,您将需要为每个版本执行一次 Maven 部署文件调用

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

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

  2. 让您的 Nexus代理另一个为这些工件提供服务的 Nexus 存储库