注意:
1、从3.0版本的Nexus开始,已经不再缓存https://repo1.maven.org/maven2/的包,所以当安装好之后,在界面上不会有任何的包可以搜索到,但是功能是一切正常的,只有当Maven构建时,Nexus才会缓存这些包下来。同时也不会有以前2.0版本的缓存选项等。我参测这样设计的原理和本地仓库的效果一致。参考:http://stackoverflow.com/questions/34782859/sonatype-nexus-3-remote-connection-pending
2、3.0版本默认没有手动上传包的功能,而如果要安装包只能通过命令行
mvn deploy:deploy-file -DgroupId=com.mysql -DartifactId=test -Dversion=1.5.0_16 -Dpackaging=jar -Dfile=d: est-nexus-1.1.0.jar -Durl=http://127.0.0.1:8081/repository/maven-public/ -DrepositoryId=maven-public
3、总体感觉3.0的没有2.0版本的好用,尤其是坐标的xml配置信息,3.0已经没有了,建议升级的用户要三思。
介绍:
- proxy是代理仓库,如果自己私有库没有对应的资源(jar等),会到这里去找。而这里可以填写中央仓库的地址,比如:https://repo1.maven.org/maven2/,当然还有其它的,再比如阿里的镜像库等。
- hosted是宿主仓库,是自己的私有库地址,这个就是自己的。这个有releases和snapshots两种类型,你如果自己创建的时候,需要指定,一个是正式发布(Release)地址,一个是镜像(Snapshot)地址。
- group管理组,组是Nexus一个强大的特性,它允许你在一个单独的URL中组合多个仓库。比如这里默认组合了:maven-central、maven-releases和maven-snapshots ,一般直接引用这个地址就好了。
测试:
下面将演示一个项目从私有仓库获取jar包到提交jar包私有仓库的流程
①从私有仓库获取依赖包
配置bus-core-api的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jsoft.test</groupId> <artifactId>bus-core-api</artifactId> <packaging>jar</packaging> <version>1.1-SNAPSHOT</version> <name>bus-core-api</name> <url>http://maven.apache.org</url> <repositories> <repository> <id>id-maven-public</id> <name>maven-public</name> <url>http://127.0.0.1:8081/repository/maven-public/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>id-maven-public</id> <name>maven-public</name> <url>http://127.0.0.1:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
然后运行命令即可观察到依赖包从自己的私有地址开始下载
mvn compile
②提交jar包的私有仓库
先配置Maven的settings文件,增加私有仓库的账号密码,此文件在%M2_HOME%confsettings.xml
<servers> ... <server> <id>oss</id> <username>admin</username> <password>admin123</password> </server> ... </servers>
然后在此配置项目的POM文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jsoft.test</groupId> <artifactId>bus-core-api</artifactId> <packaging>jar</packaging> <version>1.1-SNAPSHOT</version> <name>bus-core-api</name> <url>http://maven.apache.org</url> <repositories> <repository> <id>id-maven-public</id> <name>maven-public</name> <url>http://127.0.0.1:8081/repository/maven-public/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>id-maven-public</id> <name>maven-public</name> <url>http://127.0.0.1:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> <distributionManagement> <repository> <id>oss</id> <url>http://127.0.01:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>oss</id> <url>http://127.0.0.1:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
提示:oss这个id在pom.xml和settings.xml是一一对应的。
然后运行部署命令进行部署
mvn deploy
此时,会发现Nexus已经有了自己提交的jar包
以上参考:https://linjie.org/2016/04/23/Sonatype-nexus-3-build-run/