我试图让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文件,请尝试:
原文链接:/java/437292.htmlmvn 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')
如果它是多个文件,那就有点复杂了:
当您想要在同一个(groupId,artifactId,version)下部署多个工件时,使用maven deploy-file参数文件,分类器和类型 – 例如.jar和-sources.jar
即使对于那个用例,语法也有点违反直觉 – 你必须使用file = file1.jar作为第一个工件,然后使用files = file1-sources.jar,file1-test-sources.zip,..其余的,同时使用分类器/分类器(和包装/类型)以相同的方式(位置)指定要上载的每个工件的分类器/类型.
如果您的用例是上载不同版本的工件,则需要为每个版本执行一次maven部署文件调用.
您也可以考虑一些替代方案:
>(取决于有多少工件,以及新工件的出现频率) – 手动将这些工件上传到Nexus
>让Nexus代理另一个为这些工件提供服务的Nexus存储库.