Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。Nexus 使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclipse集成使用。Nexus支持WebDAV与LDAP安全身份认证。
私有仓库架设好以后,依赖的寻找路径变为:本地仓库->私有仓库->*仓库
nexus安装
下载(nexus)[https://www.sonatype.com/]
解压缩后保存两个文件夹
在nexus\nexus-3.29.1-01\bin目录下运行nexus
nexus /run
http://localhost:8081 ,打开nexus本地站点,点击登录,根据提示找到密码,用户名是admin
开启匿名访问
安装完毕
私有服务器仓库常用种类
- proxy:代理仓库,本地仓库和远程仓库之间的枢纽
- hosted:本地发布仓库
创建代理仓库
创建Release版本的仓库
创建Snapshot版本的仓库
配置私有仓库和发布仓库
<repositories>
<!--配置私有仓库-->
<repository>
<id>k-nexus</id>
<name>KNexus</name>
<url>http://localhost:8081/repository/k-nexus/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<distributionManagement>
<!--配置正式版发布仓库-->
<repository>
<id>mc-example-release</id>
<name>Mc Example Release</name>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<!--配置快照版发布仓库-->
<snapshotRepository>
<id>mc-example-snapshot</id>
<name>Mc Example Snapshot</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
测试代理仓库
引入一个依赖,或者直接删除本地仓库,查看依赖下载好,是否同时保存在私有仓库?如果保存,则测试成功
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
我们可以看出检查本地仓库没有后,项目主动去代理仓库寻找,代理仓库也没有则通过远程仓库(这里是阿里云)下载。
发布Snapshot仓库
报授权错误,在settings.xml中添加授权信息
<servers>
<server>
<id>k-nexus-snapshot</id>
<username>admin</username>
<password>wzy1gqqbuu</password>
</server>
</servers>
再次发布后,到发布仓库查看,发布成功
发布Release版本
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<!-- <version>1.0-SNAPSHOT</version>-->
<version>2.0-RELEASE</version>
报同样的授权错误,同样授权信息
<servers>
<!--snapshot仓库认证信息-->
<server>
<id>k-nexus-snapshot</id>
<username>admin</username>
<password>wzy1gqqbuu</password>
</server>
<!--release仓库认证信息-->
<server>
<id>k-nexus-release</id>
<username>admin</username>
<password>wzy1gqqbuu</password>
</server>
</servers>
查看仓库,确认发布成功
总结
私有仓库假设在局域网或者服务器上,可以让大家共享,可以下载依赖,也可以发布依赖,避免了因本地环境发生变化而重新下载依赖,同时又提供了平台管理依赖。