使用mvn deploy上传已有JAR至Artifactory遇执行失败及JAR损坏问题
正确上传已有JAR至Artifactory的Maven方案及问题分析
一、两种方案的问题根源
方案1:
mvn deploy:deploy
Maven的deploy:deploy目标默认依赖package阶段产出的项目构件,单独执行该目标时,Maven无法关联到你主机目录里的外部JAR,也找不到当前项目打包生成的构件,因此会报错“未检测到JAR”导致构建失败。方案2:
mvn jar:jar deploy:deployjar:jar是Maven Jar插件的默认目标,它会基于当前项目的源码目录(如src/main/java)打包生成JAR。你的场景里没有在当前项目下编译源码,插件找不到可打包的class文件,就会生成空JAR,后续deploy:deploy上传的自然就是这个空文件,所以会出现“JAR will be empty”的提示。
二、正确的上传方式
直接使用deploy:deploy-file目标,跳过完整Maven生命周期,指定已有JAR的路径、GAV坐标、Artifactory仓库信息即可,命令示例如下:
mvn deploy:deploy-file \ -Dfile=/主机目录路径/thejar.jar \ -DgroupId=你的组ID \ -DartifactId=你的构件ID \ -Dversion=版本号 \ -Dpackaging=jar \ -DrepositoryId=artifactory仓库ID \ -Durl=https://你的artifactory地址/仓库名称
参数说明:
-Dfile:本地已有JAR的绝对路径-DgroupId/-DartifactId/-Dversion:该JAR在Artifactory中的GAV坐标-DrepositoryId:对应Mavensettings.xml中配置的Artifactory仓库ID(需提前配置好用户名密码)-Durl:Artifactory目标仓库的访问URL
这种方式直接将指定的外部JAR上传至Artifactory,不会生成新构件,也无需依赖项目源码。
内容的提问来源于stack exchange,提问作者PatPanda
相关产品推荐
相关产品推荐

