部署不在此赘述,部署好后地址为:http://ip:8081/nexus
默认账号和密码:用户名:admin 密码:admin123
nexus里可以配置3种类型的仓库,分别是proxy、hosted、group
proxy是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用
hosted是宿主仓库,用户可以把自己的一些jar,deploy到hosted中,也可以手动上传jar到hosted里。比如说自己项目封装的包给其它项目使用
group是仓库组,将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址即可
如下以创建华为云代理为例,
填入地址,其它不用管,点击创建即可
选择hosted有2种模式,Snapshot快照仓库和 Release发行仓库
Snapshot快照仓库用于保存开发过程中的不稳定版本,Release发行仓库则用来保存稳定的版本。
我们只需要处理上面2个重点位置即可
将Version policy选择为Snapshot;(如果你想创建的是发布版本则使用Release)
将Deployment policy选择Allow redeploy,允许部署和更新私服上的组件
然后保存即可
对于创建组的策略模式选择mixed混合组
该组的成员选择我们需要放进来的仓库即可
在apache-maven-3.6.1\conf的settings.xml中的servers添加server
账号密码为nexus的账号密码,可以自己创建一个账号专门用来上传下载
这里的id对应下方pom文件提交私库的id
- <server>
- <id>nexus</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
根项目的pom文件:
- <!--提交私库-->
- <distributionManagement>
- <repository>
- <id>nexus</id>
- <url>http://192.168.0.90:8081/repository/maven-releases/</url>
- </repository>
- <snapshotRepository>
- <id>nexus</id>
- <url>http://192.168.0.90:8081/repository/maven-snapshots/</url>
- </snapshotRepository>
- </distributionManagement>
这里有2个库,具体采用哪个库就看我们的版本号后缀
版本号为1.0.0-SNAPSHOT,则会采用SNAPSHOT
版本号为1.0.0-RELEASES,则会采用RELEASES
然后点击maven deploy即可上传
如果报401失败可能是pom的问题,需要再次写入上面关于pom中nexus的内容,也有可能没按照上面创建库/组时未将Deployment policy选择Allow redeploy
tip:下包一般用的url为仓库组的url,因为仓库组一般组合了代理库和私有库,非常方便
根目录pom中引入下列代码,但是注意id与下面setting中配置的server的id一致
tip:配置之后只会走这里的配置,如果私库只有某些定制的包,还需要在这里加aliyun或者huaweicloud的库,也可以创建仓库组,引入代理库和私有库即可。
- <!-- 强制读取私有库-->
- <repositories>
- <repository>
- <id>nexus</id>
- <name>nexus-repository</name>
- <url>http://192.168.0.90:8081/repository/maven-public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
-
- <pluginRepositories>
- <pluginRepository>
- <id>nexus</id>
- <name>nexus-pluginRepository</name>
- <url>http://192.168.0.90:8081/repository/maven-public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
在apache-maven-3.6.1\conf的settings.xml中的servers添加server
这里的id还是对应上面的pom文件的id
- <server>
- <id>nexus</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
这种所有依赖包直接找该库,要求该库存在代理库和私有库,这样依赖才能正常拉下来
-
- <servers>
- <server>
- <id>nexus</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
- </servers>
-
- <mirrors>
- <mirror>
- <id>nexus</id>
- <mirrorOf>*</mirrorOf>
- <url>http://192.168.0.90:8081/repository/maven-public/</url>
- </mirror>
- </mirrors>
-
- <profiles>
- <profile>
- <id>nexus</id>
- <repositories>
- <repository>
- <id>nexus</id>
- <name>nexus-repository</name>
- <url>http://192.168.0.90:8081/repository/maven-public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
-
- <pluginRepositories>
- <pluginRepository>
- <id>nexus</id>
- <name>nexus-pluginRepository</name>
- <url>http://192.168.0.90:8081/repository/maven-public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
-
- </profile>
- </profiles>
-
- <activeProfiles>
- <activeProfile>nexus</activeProfile>
- </activeProfiles>
默认情况下,如果在maven setting文件下不设置nexus的账号密码,拉取包会出现报错Not authorized,nexus中配置允许匿名访问服务器,只要勾上即可