一、配置认证信息
在 Maven 的conf目录settings.xml
中添加 Nexus 认证信息(servers
节点下):
<!--配置访问私服的用户名和密码 -->
<server>
<id>releases</id><!--正式库 发行-->
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id><!--测试库 快照-->
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>
1、Snapshots 与 Releases 的区别
- nexus-releases: 用于发布 Release 版本
- nexus-snapshots: 用于发布 Snapshot 版本(快照版)
Release 版本与 Snapshot 定义如下:
Release: 1.0.0/1.0.0-RELEASE
Snapshot: 1.0.0-SNAPSHOT
- 在项目
pom.xml
中设置的版本号添加SNAPSHOT
标识的都会发布为SNAPSHOT
版本,没有SNAPSHOT
标识的都会发布为RELEASE
版本。 SNAPSHOT
版本会自动加一个时间作为标识,如:1.0.0-SNAPSHOT
发布后为变成1.0.0-SNAPSHOT-20180522.123456-1.jar
二、配置自动化部署(自动传jar至私服)
1、添加POM依赖
在 pom.xml
中添加如下代码:
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://私服仓库IP:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://私服仓库IP:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
2、拉取快照依赖
在idea中设置maven可以拉取快照版依赖
这样在团队协同开发时,或者多个公司联合开发,为了不让公共模块依赖的源码因开源而造成源码泄露,就可以把公共模块的代码上传至私服中,团队成员及时拉取就OK了。
三、部署至仓库
命令将项目依赖jar包部署只私服中
mvn deploy
为了不让测试文件执行,选择跳过测试文件
mvn deploy -Dmaven.test.skip=true
在Nexus私服中就可以看到jar包依赖
snapshots是一个快照版(测试版),有时会发行很多次,但是Nexus私服中的版本号已经确定,难道就不能上传了?
当然不是,Nexus私服会根据时间生成时间戳+上传的次数 生成第二个版本,继续保留第一个。
继续第二次部署上传
mvn deploy -Dmaven.test.skip=true
这时就会生成第二个版本
四、上传第三方 JAR 包
Nexus 3.0 不支持页面上传,可使用 maven 命令:
以谷歌的 com.google.code.kaptcha jar包为例,谷歌的jar包需要翻墙,所有必须先上传至私服中,才能成功拉取。
mvn deploy:deploy-file
#组织名
-DgroupId=com.google.code.kaptcha
#jar包名
-DartifactId=kaptcha
# 版本号
-Dversion=2.3.2
#文件类型
-Dpackaging=jar
#文件地址
-Dfile=D:\kaptcha-2.3.2.jar
#上传目的地
-Durl=http://192.168.153.142:8081/repository/maven-releases/
#settings配置文件中releases对应的ID
-DrepositoryId=nexus-releases
为了避免中文注释出现影响去掉注释
mvn deploy:deploy-file
-DgroupId=com.google.code.kaptcha
-DartifactId=kaptcha
-Dversion=2.3.2
-Dpackaging=jar
-Dfile=D:\kaptcha-2.3.2.jar
-Durl=http://192.168.153.142:8081/repository/maven-releases/
-DrepositoryId=nexus-releases
打开CMD命令行工具或者idea终端将以上指令改为一行,复制进去,回车执行
可以看到构建成功
打开Nexus私服便可看到上传的Jar包。
五、配置代理仓库
maven寻找Jar包的顺序:
在中央仓库找到对应的Jar包以后下载存放顺序:
先存到私服仓库,项目再从私服中下载,这样拉取Jar的效率就会大大提升,并且,一次下载永久存放。可复用
<!--配置代理仓库 指定私服位置下载依赖-->
<repositories>
<repository>
<id>nexus</id>
<name>Nexus Repository</name>
<url>http://192.168.153.142:8081/repository/maven-public/</url>
<!--是否允许依赖快照版-->
<snapshots>
<enabled>true</enabled>
</snapshots>
<!--是否允许依赖发行版-->
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<!--插件仓库-->
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus Plugin Repository</name>
<url>http://192.168.153.142:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
删掉原来的Jar包
重新刷新依赖
依赖重新被拉取