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>