基于Nexus搭建私服
1. 工作流程
2. 仓库类型
hosted
私服仓库
proxy仓库
远程仓库
group仓库
组仓库,里面可以设置组合多个仓库。按顺序获取jar。
3. 默认仓库
安装好了Nexus后,会内置几个maven的默认仓库。可自定义仓库。
maven-central
proxy类型。maven中央库,默认从https://repo1.maven.org/maven2/
拉取jar。
maven-releases
hosted类型。releases发行版版本仓库。
maven-snapshots
hosted类型。snapshots快照版版本仓库。
maven-public
group类型。默认把上面3个仓库组合在一起。
注意:Nexus安装好以后需要更新远程仓库项目构建的索引文件。进入仓库就可以看到相关的按钮。
4. 项目配置
采用settings.xml中配置仓库的方式进行配置。
settings.xml配置server
<servers>
<server>
<id>release</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshot</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
项目pom.xml配置distributionManagement与server对应
<distributionManagement>
<repository>
<id>release</id>
<name>Release Repository</name>
<!--地址,对应仓库属性中可以找到-->
<url>http://xxx/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshot</id>
<name>Snapshot Repository</name>
<url>http://xxx/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
settings.xml配置repository
settings.xml中不能单独配置repository,基于profile进行配置。
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<!--覆盖掉中央仓库-->
<id>central</id>
<name>nexus central</name>
<url>http://xxx/repository/maven-public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<!--快照版本,不从中央仓库拿-->
<enabled>false</enabled>
</snapshots>
</repository>
<!--另外的仓库,会按照顺序进行查找-->
<repository>
<id>releases</id>
<url>http://xxx/repository/maven-releases/</url>
</repository>
<repository>
<id>snapshots</id>
<url>http://xxx/repository/maven-snapshots/</url>
</repository>
</repositories>
<!--配置插件下载的仓库-->
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>snapshots</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>