Nexus服务器用途
Nexus服务器是一个代码包管理的服务器,可以理解 Nexus 服务器是一个巨大的 Library 仓库。Nexus 可以支持管理的工具包括 Maven , npm 等,对于 JAVA 开发来说,只要用到 Maven 管理就可以了。
Nexus服务器优点
传统的中央仓库的地理位置比较远,因此,当公司开发人员数量越来越多时,如果不架设一台自己的Nexus服务器,会产生大量的流量阻塞带宽,并且在出现一些不可抗原因(光缆被挖断)导致无法连接到中央仓库时,开发就会因为无法下载相关依赖包而进度停滞。因此在本地环境部署一台私有的Nexus服务器来缓存所有依赖包,并且将公司内部开发的私有包也部署上去,方便其他开发人员下载,是非常有必要的。因为 Nexus 有权限控制,因此外部人员是无法得到公司内部开发的项目包的。
将自己的写的 maven 构件发布到私服
1、在 pom.xml 文件中声明
声明快照发布的宿主仓库和 release 版本发布的仓库。
<distributionManagement>
<snapshotRepository>
<id>maven-nexus-snapshots</id>
<name>maven-nexus-snapshots</name>
<url> http://192.168.0.116:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>maven-nexus-repository</id>
<name>maven-nexus-repository</name>
<url>http://192.168.0.116:8081/nexus/content/repositories/releases/</url>
</repository>
</distributionManagement>
Maven 区别对待 release 版本的构件和 snapshot 版本的构件, snapshot 为开发过程中的版本,实时,但不稳定,release版本则比较稳定。Maven 会根据你项目的版本来判断将构件分发到哪个仓库。
2、在 settings.xml 文件中配置
由于用 Maven 分发构件到远程仓库需要认证,须要在~/.m2/settings.xml中加入验证信息:
<server>
<id>maven-nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-nexus-repository</id>
<username>admin</username>
<password>admin123</password>
</server>
注意: settings.xml 中 server 元素下 id 的值必须与 POM 中 repository 或 snapshotRepository 下 id 的值完全一致 。
附:发布 release 版本时发生错误 Failed to transfer file … Retrun code is 401
这是因为: Nexus中 Releases 仓库默认的 Deployment Policy是“Disable Redeploy”,所以无法部署的问题在这个地方,解决方法是将其修改为“Allow Redeploy”就可以了。
eclipse 的控制台显示: