Nexus下载地址:
https://download.sonatype.com/nexus/3/latest-unix.tar.gz
版本:nexus-3-37.0-01
安装:
解压:
tar -zxvf latest-unix.tar.gz
启动Nexus:
/opt/nexus-3-37.0-01/bin/ nexus-start
查看状态:nexus status
查看端口是否被占用
netstat -anp | grep java
如果还是不行关闭防火墙:
systemctl status firewalld 查看状态
systemctl disable firewalld 禁止
systemctl stop firewalld 关闭防火墙
登录网页:ip+8081
这个密码只能登录一次,用户名是admin
重新设置新密码:
设置是否匿名访问:匿名不需要配置,非匿名安全性高,需要配置
交接各种nexus仓库:
仓库类型 | 说明 |
proxy | 某个远程仓库代理 |
group | 存放:通过nexus获取第三方jar包 |
hosted | 存放:本团队其他人员部署到nexus的jar包 |
仓库名称 | 说明 |
maven-central | Nexus对Maven中央仓库代理 |
maven-public | 默认创建,供开发人员下载使用的组仓库 |
maven-release | Nexus默认创建,供开发人员部署自己的jar包宿主仓库 要求release版本 |
maven-snapshot | Nexus默认创建,供开发人员部署自己的jar包宿主仓库, 要求snapshots |
初始状态下这几个仓库都没有内容
配置setting.xml文件
1、重新配置本地仓库
<localRepository>D:\maven-repo</localRepository>
2、指定Nexus服务器地址
我们把配置阿里云仓库地址的mirror标签改成下面:原来的注掉
<mirror><id>nexus-mine</id><mirrorOf>central</mirrorOf><name>Nexus mine</name><url>http://192.168.200.132:8081/repository/maven-public/</url> </mirror>
3、如果匿名访问,不设置,如果禁止使用匿名访问,需要配置一下
<server><id>nexus-mine</id><username>用户名</username><password>密码</password> </server>
注意:server标签内的id标签值必须和mirror标签中的id值一样
4、找一个用到框架的Maven工程,执行命令:
mvn clean compile
就会执行下载:
nexus的客户端查看maven-public,就会有编译的jar包。
将我们jar包部署到Nexus
配置Maven工程:我们想要发布的工程pom.xml添加下面配置
<distributionManagement><snapshotRepository><id>nexus-mine</id><name>Nexus Snapshot</name><url>http://192.168.200.132.8081/repostory/maven-snapshots/</url></snapshotRepository> </distributionManagement>
注意:这里snapshotRepository的id标签必须和setting.xml中指定的mirror标签id属性一致
maven工程执行部署命令:
mvn deploy
出现问题,执行安装:
mvn clean install
设置一下:
项目引用别人部署的jar包
1、默认访问的Nexus仓库:maven-public
2、存放别人部署jar包的仓库:maven-snapshots
<repositories><repository><id>nexus-mine</id><name>nexus-mine</name><url>http://192.168.200.132.8081/repostory/maven-snapshots</url><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository> </repositories>
修改某一个仓库的配置
举例:修改maven-central仓库
jar包冲突:
1、较低的版本里面没有依赖,但是较高版本存在依赖,升级版本
2、全限定名相同,但是代码完全不同(exclusions排除依赖)
3、解决:Maven的enforcer插件既可以监测同一个jar包的不同版本,又可以检测不同jar包中同名的类
4、解决:IDEA的maven Helper插件它能够罗列出来同一个jar包的不同版本,以及他们的来源,但是对不同jar包中同名的类没有办法。
enforcer的pom.xml配置:
<pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-enforcer-plugin</artifactId><version>1.4.1</version><executions><execution><id>enforce-dependencies</id><phase>validate</phase><goals><goal>display-info</goal><goal>enforce</goal></goals></execution></executions><dependencies><dependency><groupId>org.codehaus.mojo</groupId><artifactId>extra-enforcer-rules</artifactId><version>1.0-beta-4</version></dependency></dependencies><configuration><rules><banDuplicateClasses><findAllDuplicates>true</findAllDuplicates></banDuplicateClasses></rules></configuration></plugin></plugins> </pluginManagement>
测试:
mvn clean package enforcer:enforcer
工程导出jar包:
选择empty。
将jar包安装到maven仓库
我们使用install插件的install-file
mvn install:install-file -Dfile=[体系外 jar 包路径]
-DgroupId=[体系外jar包强行设定坐标]
-DartifactId=[体系外jar包强行设定坐标]
-Dversion=1
-Dpackage=jar
实例:(windows系统下使用^符号换行;Linux系统用\)
mvn install:install-file -Dfile=D:\idea2019workspace\atguigu-maven-outer\out\artifacts\atguigu_maven-outer\atguigu-maven-outer.jar^
-DgroupId=com.atguigu.maven^
-DartifactId=atguigu-maven-outer^
-Dversion=1^
-Dpackage=jar
<dependencies><dependency><groupId>com.atguigu.maven</groupId><artifactId>my-outer</artifactId><version>1</version></dependency> </dependencies>