Maven发布项目到本地仓库和远程私服仓库

一、    将项目发布到本地maven仓库

输入clean install


运行完成后,控制台可以看到成功的信息


然后去~\.m2\repository目录可以看到已经发布到本地仓库的文件


二、    将项目发布到远程私服库

在公司项目中,不同项目组之间,可能需要公用代码,互相依赖包的情况,这时候需要把自己的应用包发布到公司的私服仓库中,以便其他同事使用,下面介绍发布大nexus私服仓库的步骤:

发布一个项目可以在nexus网页上upload,也可以通过mvn deploy命令方式发布,如果是后者则在pom.xml中添加distributionManagement标签

<distributionManagement>
         <repository>
                   <id>releases</id>
                   <name>Nexus ReleaseRepository</name>
                   <url>http://192.168.10.6:8081/nexus/content/repositories/releases/</url>
         </repository>
         <snapshotRepository>
                   <id>snapshots</id>
                   <name>Nexus SnapshotRepository</name>
                   <url>http://192.168.10.6:8081/nexus/content/repositories/snapshots/</url>
         </snapshotRepository>
</distributionManagement>

在maven的settings.xml文件中添加服务器配置,仓库id、用户名和密码,id需要与上面pom.xml中的仓库id一致,如果不一致会报Error code 401, Unauthorized错误,id可以与私服库上的id不一致,url正确即可

<servers>
         <server>
                   <id>releases</id>
                   <username>admin</username>
                   <password>xxx</password>
         </server>
         <server>
                   <id>snapshots</id>
                   <username>admin</username>
                   <password>xxx</password>
         </server>
</servers>

输入clean deploy


执行完成之后,查看nexus服务器,点开部署的snapshots仓库,则可以看到刚才新安装的项目

到此发布完成,可能有人会注意到,上面在settings.xml文件中保存的服务器密码是明文方式保存的,存在一定的安全隐患,下面介绍下如何加密保存

很简单,通过maven提供的命令就可以完成,mvn -emp or mvn --encrypt-master-password

首先创建个住安全密码:

E:\maven\apache-maven-3.2.5\bin>mvn-emp mypwd

{jHorajwXpMMH8urL7y9Xeh3vCOaW9OniO8la9ooPMOE=}

然后将生成的密码,copy到~/.m2/settings-security.xml中,没有这个文件则自己创建个

<settingsSecurity>
    <master>{jHorajwXpMMH8urL7y9Xeh3vCOaW9OniO8la9ooPMOE=}</master>
</settingsSecurity>

然后将服务器密码进行加密

E:\maven\apache-maven-3.2.5\bin>mvn-ep xxx

{M80C6eJf+6IHYBPHzJr/mTOl12vl2aAOMPLMQAer6wg=}

然后将加密之后的密文替换之前的服务器明文密码

<servers>
         <server>
                   <id>releases</id>
                   <username>admin</username>
                   <password>{M80C6eJf+6IHYBPHzJr/mTOl12vl2aAOMPLMQAer6wg=}</password>
         </server>
         <server>
                   <id>snapshots</id>
                   <username>admin</username>
                   <password>{M80C6eJf+6IHYBPHzJr/mTOl12vl2aAOMPLMQAer6wg=}</password>
         </server>
</servers>

三、    snapshot快照库和release发布库的应用

首先说明下snapshop快照库和release发布库的区别:

snapshop快照仓库:用于保存还处于开发过程中不稳定的版本

release发布仓库:用于保存稳定的发行版本

定义一个模块为快照版本,需要在版本号后面加上-SNAPSHOT(必须是大写)

 

maven的依赖是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使远程仓库的包比本地新,maven不会更新下载,还是会使用本地的旧包。如果在开发过程中,我们需要更改功能、修改bug,则需要频繁的发布包,这个时候每次发布都需要升级版本号,是不合理的,所以maven提供了快照版本,在不更改版本号的情况下,会自动下载最新的快照版本。

 

在mvn deploy的时候,根据snapshot和release的规则,判断版本号后面是否带有-SNAPSHOT,带有则认为是快照版本,会发布到snapshot库,不带则认为是发布版本,会发布到release库中。如过pom.xml没有配置快照库,只有发布库的话,而需要发布-SNAPSHOT版本默认是发布不了的,会报错:Error code 400, Bad Request,nexus的策略禁止了这样的操作。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值