maven setting 多仓库配置


前言

maven setting 通常公司都有私服地址,但不是所有包私服上都有,这时就要用阿里云或者其他地址去拉包。
那么我们可以直接设置setting 使其拉包时第一个地址拉取不到自动到第二个地址拉取以此类推可设置多个仓库地址进行补充。

一 、setting文件

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

<localRepository>D:softwaredevapache-maven-3.6.3Repositories</localRepository>
  <pluginGroups></pluginGroups>
  <proxies></proxies>
  <servers></servers>
  <mirrors></mirrors>

  <profiles>
    <profile>
      <id>aliyun</id> 
      <repositories>
        <repository>
          <id>aliyun</id> 
          <url>https://maven.aliyun.com/repository/public</url> 
          <releases>
            <enabled>true</enabled>
          </releases> 
          <snapshots>
            <enabled>true</enabled> 
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile>
	<profile>
		<id>private</id>
		<repositories>
			<repository>
				<id>maven-releases</id>
				<name>User Porject Release</name>
				<url>http://私服地址/nexus/repository/maven-releases/</url>
				<snapshots>
					<enabled>false</enabled>
				</snapshots>
				<releases>
					<enabled>true</enabled>
				</releases>
			</repository>
			<repository>
				<id>maven-snapshots</id>
				<name>User Porject Snapshot</name>
				<url>http://私服地址/nexus/repository/maven-snapshots/</url>
				<snapshots>
					<enabled>true</enabled>
					<updatePolicy>always</updatePolicy>
				</snapshots>
			</repository>
			<!-- 也可以把阿里云等仓库地址直接在这里补充 -->
			<repository>
				<id>com.e-iceblue</id>
				<name>e-iceblue</name>
				 <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
			</repository>
		</repositories>
	</profile>
<!--    <profile>-->
<!--      <id>repo1</id>-->
<!--      <repositories>-->
<!--        <repository>-->
<!--          <id>repo1</id>-->
<!--          <url>https://repo1.maven.org/maven2</url>-->
<!--          <releases>-->
<!--            <enabled>true</enabled>-->
<!--          </releases>-->
<!--          <snapshots>-->
<!--            <enabled>true</enabled>-->
<!--            <updatePolicy>always</updatePolicy>-->
<!--          </snapshots>-->
<!--        </repository>-->
<!--      </repositories>-->
<!--    </profile>-->
<!--    <profile>-->
<!--      <id>repo2</id>-->
<!--      <repositories>-->
<!--        <repository>-->
<!--          <id>repo2</id>-->
<!--          <url>https://repo2.maven.org/maven2</url>-->
<!--          <releases>-->
<!--            <enabled>true</enabled>-->
<!--          </releases>-->
<!--          <snapshots>-->
<!--            <enabled>true</enabled>-->
<!--            <updatePolicy>always</updatePolicy>-->
<!--          </snapshots>-->
<!--        </repository>-->
<!--      </repositories>-->
<!--    </profile>-->
  </profiles>

  <activeProfiles>
    <activeProfile>aliyun</activeProfile>
    <activeProfile>private</activeProfile>
<!--  <activeProfile>repo1</activeProfile>-->
<!--  <activeProfile>repo2</activeProfile>-->
    </activeProfiles>
</settings>

二、其他问题

  1. maven 默认有一个setting文件,如果我们的setting文件有很多,而默认setting中的mirror 直接指定了仓库路径,此时无论引用哪个setting文件,都会首先到默认setting内指定的仓库中拉取。
    如下图所示,我的默认setting文件如此设置后,我指定了另外的setting文件,但是他会去D:softwaredevapache-maven-3.6.3Repositorieshlj路径下寻包,寻找不到直接报错Could not find artifact xxx in public (file://D:softwaredevapache-maven-3.6.3Repositorieshlj),最好只保留一个setting文件。
    在这里插入图片描述
    在这里插入图片描述