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这么来,否则,一不留神就出错。
本文详细介绍了Maven部署的几个关键步骤,包括正确使用deploy命令,配置文件中的账号密码设置,选择正确的仓库类型,指定pomFile的重要性,以及调整父项目中的distributionManagement设置。避免常见错误,确保顺利部署到私有Nexus仓库。

3386

被折叠的 条评论
为什么被折叠?



