工作中通常会碰到需要使用公司私服的情况,但是有的私服jar包不全,你的本地环境可能希望私服跟其他仓库一起使用。
maven的mirrors可以配置多个镜像地址,但是它默认使用的是第一个mirror,只有当第一个mirror不可用后,才会使用第二个,并不能达到第一个mirror找不到的包去第二个mirror下载的效果
。
<settings>
<mirrors>
<mirror>
<id>mirror1</id>
<mirrorOf>central,jcenter</mirrorOf>
<url>https://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>mirror2</id>
<mirrorOf>central,jcenter</mirrorOf>
<url>私服地址</url>
</mirror>
</mirrors>
</settings>
maven可以配置多个repository,在下载依赖时,maven会从第一个repository去下载,找不到去第二个,依此类推。因此,我们可以通过在repository添加自己私服地址的方式来解决这个问题。
<settings>
<mirrors>
<mirror>
<id>mirror1</id>
<mirrorOf>central,jcenter,!myRepo</mirrorOf>
<url>https://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>mirror2</id>
<mirrorOf>myRepo</mirrorOf>
<url>私服地址</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>myProfile</id>
<repositories>
<repository>
<id>central</id>
<url>https://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>myRepo</id>
<url>local repo url</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>myProfile</activeProfile>
</activeProfiles>
</settings>
如果你的私服是http地址,且maven是3.8.1及以上版本,需要添加以下mirror阻止maven对http私服地址的屏蔽。
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>dummy</mirrorOf>
<name>Dummy mirror to override default blocking mirror that blocks http</name>
<url>http://0.0.0.0/</url>
<blocked>false</blocked>
</mirror>