maven deploy你要知道的几件事

本文详细介绍了Maven部署的几个关键步骤,包括正确使用deploy命令,配置文件中的账号密码设置,选择正确的仓库类型,指定pomFile的重要性,以及调整父项目中的distributionManagement设置。避免常见错误,确保顺利部署到私有Nexus仓库。

1.发布命令

部署jar

mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=F:\yuhualong\repository\cn\roshiyun\roshiyun-core-web\1.1.0-SNAPSHOT\roshiyun-core-web-1.1.0-SNAPSHOT.jar -DgroupId=cn.roshiyun -DartifactId=roshiyun-core-web -Dversion=1.1.0-SNAPSHOT -Dpackaging=jar -DrepositoryId=snapshots -Durl=http://test.hr11.com:8082/repository/maven-public/

部署pom

mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=F:\yuhualong\repository\cn\roshiyun\roshiyun-parent\1.1.0-RELEASE\roshiyun-parent-1.1.0-RELEASE.pom -DgroupId=cn.roshiyun -DartifactId=roshiyun-parent -Dversion=1.1.0-RELEASE -Dpackaging=pom -DrepositoryId=releases -Durl=http://test.hr11.com:8082/repository/maven-releases

一定要写-Durl -DrepositoryId,有些人认为在maven配置文件已经有url,repositoryId了,所以不需要指定,大错特错!!!

编辑切换为居中

添加图片注释,不超过 140 字(可选)

2.配置文件需要有相关账号密码,否则401



<!-- 私服的验证信息 --> <servers> <server> <id>releases</id> <username>roshi</username> <password>123456</password> </server> <server> <id>snapshots</id> <username>roshi</username> <password>123456</password> </server> </servers>

id不一定是库名,这里只是标记账号密码的id,但是id一定要与提交的repositoryId的名字是一致的,即repositoryId只能指定snapshots或者releases,

DrepositoryId本身也是来定位配置文件的登录用户名密码的。

3.仓库类型一定要选对,否则405

只能选hosted,不能选group,proxy

编辑切换为居中

添加图片注释,不超过 140 字(可选)

4.注意加-DpomFile

首先,是打 jar 包,maven 默认是不会将依赖的 jar 打入到新包中的,而是通过 pom 文件进行构建。而现在流行的 SpringBoot 项目则将所有的 jar 包打进去,使其能够快速部署。

通常,我们上传到 Nexus 私服上的 jar 包不会包含其他的 jar 包,依赖关系依靠 pom 文件。

假设,你已经通过 package 命令生成了一个不包含其他的 jar 的 jar 包。那么就可以使用以下命令: mvn deploy:deploy-file

比较关键的就是 -DpomFile=pom.xml,如果你不指定的话,那么 maven 就会自动生成新的 pom ,但基本是空的,依赖关系都没有的 —— 这将导致,如果别人引用了你的 jar 包,并且需要使用依赖关系里的代码,但却找不到,就会抛出 NoClassDefFoundError 错误,因为编译时没有问题,但运行时却找不到 class 文件。

或者干脆,程序包***不存在,编译都不通过。

5.父项目的distributionManagement私服地址修改成自己的



<distributionManagement> <repository> <id>releases</id> <name>Nexus Release Repository</name> <url>http://你的私服/repository/maven-releases/</url> </repository> <snapshotRepository> <id>snapshots</id> <name>Nexus Snapshot Repository</name> <url>http://你的私服/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement> <repositories> <repository> <id>releases</id> <name>Nexus Snapshot Repository</name> <url>http://你的私服/repository/maven-public/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories>

注意repositoryId的值应该与server的id一致

6.尽可能的mvn deploy,不要直接进行deploy-file生命周期

如果你能拿到源码,最好是从头compile--》package--》install--》deploy-file这么来,否则,一不留神就出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eq0284

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值