nexus相当于私服,maven项目不用直接去中央工厂中找jar包(很慢),先从nexus中找jar包(快),nexus中找不到,nexus在从中央工厂中找。
1.下载安装
到https://www.sonatype.com/download-oss-sonatype下载,我下载的是nexus-2.14.4-03-bundle.zip。解压后得到两个文件夹。
把nexus那个文件夹下的bin目录路径添加到环境变量。改变D:\nexus\nexus-2.14.4-03\bin\jsw\conf下的wrapper.conf里面wrapper.java.command=D:\javajdk\jdk\bin\java。变为自己的jdk安装目录。
然后用管理员身份打开cmd,运行nexus install,nexus start.登录localhost:8081/nexus。用默认的admin/admin123登录。
2.nexus repository
localhost:8081/nexus的repository中有几种类别的工厂,
hosted本地的工厂,有三个3rd party,Snapshots,Releases。分别存放不同的jar包。
3rd party:存放的是中央工厂没有的jar包,可以在artifact upload上传。
Snapshots:存放的是maven中snapshot的项目
Releases: 存放的是maven中release的项目
proxy为代理工厂
central:保存从中央工厂下载的jar包。
其他的工厂也是保存自己工厂下载的jar包。
group包含了其他工厂,保存包含工厂中所有的jar包,一般包含central,还有hosted的三个工厂。可以在configuration里面改。
3.配置
3.1 maven项目中配置
在maven项目中配置的nexus,只能在这个项目中使用。另一个没有联系的maven项目还要配置。在pom文件中配置:
<repositories>
<repository>
<id>nexus</id>
<name>nexus repository</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>//group的地址,包含了4个工厂
<releases><!-- 表示包不包含这个级别的jar包 -->
<enabled>true</enabled><!-- 默认为TRUE -->
</releases>
<snapshots>
<enabled>true</enabled><!-- 默认false -->
</snapshots>
</repository>
</repositories>
3.2 在maven属性中配置
打开settings文件,修改:
<profile>
<id>nexusRepository</id>
<repositories>
<repository>
<id>nexus</id>
<name>nexus repository</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled><!-- 默认false -->
</snapshots>
</repository>
</repositories>
</profile>
<activeProfiles><!--需要这个激活,不然上面配置的没有用,填写profile的id名称-->
<activeProfile>nexusRepository</activeProfile>
</activeProfiles>
配置之后所有的maven都会从配置的url找jar包。
3.3配置镜像
镜像可以配置所有的jar都从镜像中读取,如果镜像中没有,那就找不到。不会去中央工厂中找。
<mirror>
<id>nexusMirror</id>
<mirrorOf>*</mirrorOf><!--填写那些需要从镜像中找,可以写central,nexusRepository,*表示所有-->
<name>nexus mirror</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</mirror>
中央工厂在maven安装目录lib下maven-model-build-xxx.jar的pom中。可以在settings文件中覆盖,或者配置镜像来限制从中央工厂中找。