将自己的写的 maven 构件发布到 nexus 私服

Nexus服务器用途

Nexus服务器是一个代码包管理的服务器,可以理解 Nexus 服务器是一个巨大的 Library 仓库。Nexus 可以支持管理的工具包括 Maven , npm 等,对于 JAVA 开发来说,只要用到 Maven 管理就可以了。

Nexus服务器优点

传统的中央仓库的地理位置比较远,因此,当公司开发人员数量越来越多时,如果不架设一台自己的Nexus服务器,会产生大量的流量阻塞带宽,并且在出现一些不可抗原因(光缆被挖断)导致无法连接到中央仓库时,开发就会因为无法下载相关依赖包而进度停滞。因此在本地环境部署一台私有的Nexus服务器来缓存所有依赖包,并且将公司内部开发的私有包也部署上去,方便其他开发人员下载,是非常有必要的。因为 Nexus 有权限控制,因此外部人员是无法得到公司内部开发的项目包的

将自己的写的 maven 构件发布到私服
1、在 pom.xml 文件中声明
声明快照发布的宿主仓库和 release 版本发布的仓库。

<distributionManagement>
    <snapshotRepository>
        <id>maven-nexus-snapshotsid>
        <name>maven-nexus-snapshotsname>
        <url> http://192.168.0.116:8081/nexus/content/repositories/snapshots/url>
    snapshotRepository>
    <repository>
        <id>maven-nexus-repositoryid>
        <name>maven-nexus-repositoryname>
        <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-snapshotsid>
    <username>adminusername>
    <password>admin123password>
server>
<server>
    <id>maven-nexus-repositoryid>
    <username>adminusername>
    <password>admin123password>
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 的控制台显示:
将自己的写的 maven 构件发布到 nexus 私服_第1张图片

你可能感兴趣的:(maven,maven,nexus)