Maven私服配置的两种方式
以下配置均在settings.xml中配置,私服配置不建议配置在某个项目的 pom.xml文件中。
1、镜像方式配置。
maven 在默认情况下是从中央仓库下载构建,也就是 id 为 central 的仓库。如果没有特殊需求,一般只需要将私服地址配置为镜像,同时配置其代理所有的仓库就可以实现通过私服下载依赖的功能。(通过私服代理所有的仓库)
当按照以上方式配置之后,所有的依赖下载请求都将通过私服下载。
2、远程仓库方式配置
使用覆盖默认 central 仓库的方式来配置私服。
此配置中的远程仓库 id 是 central,也就是中央仓库的 id,这么配置的原因就是使用当前配置的私服地址覆盖默认的中央仓库地址。
以上两种方式都可以实现配置 maven 私服的功能,个人建议使用镜像的方式配置,最方便简单,不易出错,同时将访问外部仓库的职责全部丢给私服,方便私服统一管理。
pom.xml中repositories、pluginRepository的作用
用来配置maven项目的远程仓库。用来配置maven插件的远程仓库。
如果我们创建一个项目,就需要配置一次。可以将远程仓库配置在maven的setting.xml里面.这样就可以实现只配置一次。
snapshots默认是关闭的,需要开启。是否支持快照版本,是否支持release版本?
<repositories>
<repository>
<id>nexus</id>
<url>http://192.168.141.110:8082/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<url>http://192.168.141.110:8082/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
在pom.xml中使用distributionManagement将项目打包上传到nexus私服。
<distributionManagement>
<repository>
<id>nexus</id>
<name>Pica 3rdParty Repository</name>
<url>http://192.168.141.110:8082/repository/pica-3rdParty/</url>
</repository>
</distributionManagement>
仓库:对maven来说仓库分为两类:本地仓库和远程仓库,远程仓库又分为中央仓库 私服和其他公共库。
私服是一种特殊的远程仓库。
Nexus是当前最流行的Maven仓库管理软件。
Nexus的仓库与仓库组:Nexus包含了各种类型的仓库的概念,包括代理仓库、宿主仓库、仓库组等。每一种仓库都提供了丰富实用的配置参数,方便用户根据需要进行定制。
仓库有四种类型(Type):group(仓库组)、hosted(宿主)、proxy(代理)和virtual(虚拟);每个仓库的格式(Format)为maven2或maven1;还有一个策略属性Policy:表示该仓库为发布版本仓库(Release)还是快照版本仓库(Snapshot);最后两列是仓库的状态和路径。
Apache Snapshots这是一个策略为Snapshot的代理仓库,用来代理Apache Snapshots仓库的快照版本构件;
Central该仓库代理Maven中央仓库 策略为Release,因此只会下载和缓存中央仓库中的发布版本构件;
(maven-)Releases这是一个策略为Release的宿主类型仓库,用来部署组织内部的发布版本构件;
(maven-)Snapshots这是一个策略为Snapshot的宿主类型仓库,用来部署组织内部的快照版本构件;
我们自己打的包都在这两个下面.
代理仓库会间接的从远程仓库下载并缓存构件;