Maven之——Nexus仓库与构件
1、 Nexus的索引与构件搜索
用户可以根据构件名称、GVA来在Nexus中搜索所需构件、但是前提是被搜索的仓库开启索引。比如中央仓库、默认中央仓库是关闭自动下载远程索引的、如下图、开启下载中央仓库远程索引:
可以在ScheduledTasks中观察系统的调度任务、也可以在这里配置系统的调度任务。
2、 配置Maven从Nexus下载构件
Maven私服搭建好之后、需要修改配置文件、使用Nexus私服。具体目标是、所有构件和插件的请求都转向Nexus私服。
大致步骤:1、配置Nexus做为我们仓库。2、将Nexus做为所有仓库的镜像。
3、 配置Nexus做为我们仓库
如果在某一具体项目的POM中配置、那只对当前项目有效、若想一次配置所有项目都使用、那么就是在settings.xml文件中配置、但是settings.xml中没有关于Repositeries配置、但是可以在<profiles><profile>标签中配置、然后激活<profile>配置文件、通过id关联、具体见下方详细配置信息:
<profiles> ... <profile> <id>nexus</id> <repositories> <repository> <id>nexus</id> <name>Nexus Repository</name> <url>http://localhost:8081/nexus/content/groups/public/</url> <layout>default</layout> <!--<snapshots>--> <!--<enabled>false</enabled>--> <!--</snapshots>--> <snapshots> <enabled>true</enabled> <checksumPolicy>ignore</checksumPolicy> <updatePolicy>daily</updatePolicy> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>Nexus plugins</name> <url>http://localhost:8081/nexus/content/groups/public/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> <profile> <id>central</id> <repositories> <repository> <id>central</id> <name>Central Repository</name> <url>http://central</url> <layout>default</layout> <!--<snapshots>--> <!--<enabled>false</enabled>--> <!--</snapshots>--> <snapshots> <enabled>true</enabled> <checksumPolicy>warn</checksumPolicy> <updatePolicy>daily</updatePolicy> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <name>Nexus plugins</name> <url>http://central</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> <activeProfile>central</activeProfile> </activeProfiles>
4、 将Nexus做为所有仓库的镜像。
这样所有仓库请求都会转到Nexus私有仓库。镜像的配置:
<mirrors> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <name>All repositories mirror</name> <url>http://localhost:8081/nexus/content/groups/public/</url> </mirror> </mirrors>
也就是为所有仓库开启镜像。
5、 部署构件至Nexus
部署构件到Nexus有两种方式、一是将我们的项目上传到Nexus私服、二是手动将第三方构件部署到宿主仓库。
6、 使用Maven部署构件至Nexus
日常开发中、可以将快照版本的构件直接部署到Nexus中的Snapshot宿主仓库、或者我们自己定义的策略为Snapshot的仓库。发布版的可以直接部署到Nexus中策略为Release的仓库。POM中的配置:
<distributionManagement> <repository> <id>nexus-release</id> <name>Project release repository</name> <url>http://localhost:8081/nexus/content/repositories/releases/</url> <!--<url>http://localhost:8081/nexus/content/repositories/Foo_Release/</url>--> </repository> <snapshotRepository> <id>nexus-snapshot</id> <name>Project snapshot repositories</name> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> <!--<url>http://localhost:8081/nexus/content/repositories/Foo_Snapshots/</url>--> </snapshotRepository> </distributionManagement>
Nexus内置的仓库对于匿名用户是只读的、为了能部署构件、还要在settings.xml中配置认证信息、具体是通过仓库的id关联的。认证信息:
<servers> <server> <id>nexus-release</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-snapshot</id> <username>admin</username> <password>admin123</password> </server> </servers>
下面会提到Nexus内置的用户以及他们拥有的权限。
7、 手动部署第三方构件至Nexus
首先选择一个宿主仓库、比如Nexus内置的3rdparty、如下图:
上传好之后就可以在Browse index选项中看到了。