# 1.远程仓库的配置

在项目中的pom.xml中配置该仓库:

<!-- 配置远程仓库 -->
<repositories>
   <repository>
       <id>jboss</id>
       <name>JBoss Repository</name>
       <url>http://repository.jboss.com/maven2/</url>
       <releases>
           <enabled>true</enabled>
           <updatePolicy>daily</updatePolicy>
       </releases>
       <snapshots>
           <enabled>false</enabled>
           <checksumPolicy>warn</checksumPolicy>
       </snapshots>
       <layout>default</layout>
   </repository>
</repositories>

# 参数说明

repository

在 repositories 元素下,可以使用 repository 子元素声明一个或者多个远程仓库。

# id

仓库声明的唯一 id,尤其需要注意的是,Maven 自带的中央仓库使用的 id 为 central,如果其他仓库声明也使用该 id,就会覆盖中央仓库的配置。

# name

仓库的名称,让我们直观方便的知道仓库是哪个,暂时没发现其他太大的含义。

# url

指向了仓库的地址,一般来说,该地址都基于 http 协议,Maven 用户都可以在浏览器中打开仓库地址浏览构件。

# releases 和 snapshots

用来控制 Maven 对于发布版构件和快照版构件的下载权限。需要注意的是 enabled 子元素,该例中 releases 的 enabled 值为 true,表示开启 JBoss 仓库的发布版本下载支持,而 snapshots 的 enabled 值为 false,表示关闭 JBoss 仓库的快照版本的下载支持。根据该配置,Maven 只会从 JBoss 仓库下载发布版的构件,而不会下载快照版的构件。

# layout

元素值 default 表示仓库的布局是 Maven2 及 Maven3 的默认布局,而不是 Maven1 的布局。基本不会用到 Maven1 的布局。

# 其他

对于 releases 和 snapshots 来说,除了 enabled,它们还包含另外两个子元素 updatePolicy 和 checksumPolicy。

元素 updatePolicy 用来配置 Maven 从远处仓库检查更新的频率,默认值是 daily,表示 Maven 每天检查一次。其他可用的值包括:never-从不检查更新;always-每次构建都检查更新;interval:X-每隔 X 分钟检查一次更新(X 为任意整数)。

元素 checksumPolicy 用来配置 Maven 检查校验和文件的策略。当构建被部署到 Maven 仓库中时,会同时部署对应的检验和文件。在下载构件的时候,Maven 会验证校验和文件,如果校验和验证失败,当 checksumPolicy 的值为默认的 warn 时,Maven 会在执行构建时输出警告信息,其他可用的值包括:fail-Maven 遇到校验和错误就让构建失败;ignore-使 Maven 完全忽略校验和错误。

# 2.远程仓库的认证

settings.xml

<settings>
    ...
    <!--配置远程仓库认证信息-->
    <servers>
        <server>
            <id>releases</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
    ...
</settings>

pom.xml

<distributionManagement>
  <repository>
    <id>releases</id>
    <name>public</name>
    <url>http://42.56.90.105:8081/nexus/content/repositories/releases</url>
  </repository>
  <snapshotRepository>
    <id>snapshots</id>
    <name>Snapshots</name>
    <url>http://42.56.90.105:8081/nexus/content/repositories/snapshots</url>
  </snapshotRepository>
</distributionManagement>

distributionManagement 包含 repository 和 snapshotRepository 子元素,前者表示发布版本(稳定版本)构件的仓库,后者表示快照版本(开发测试版本)的仓库。这两个元素都需要配置 id、name 和 url,id 为远程仓库的唯一标识,name 是为了方便人阅读,关键的 url 表示该仓库的地址。

# 3.配置远程仓库的镜像

setting.xml

<?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">
    <interactiveMode>true</interactiveMode>
    <servers>
        <server>
            <id>maven-releases</id>
            <username>dep</username>
            <password>dep123</password>
        </server>

        <server>
            <id>maven-snapshots</id>
            <username>dep</username>
            <password>dep123</password>
        </server>
    </servers>

    <profiles>

        <profile>
            <id>downloadSources</id>
            <properties>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
            </properties>
        </profile>
        <profile>
            <id>jdk-1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            </properties>
        </profile>
        <profile>
            <id>nexus-vmware</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <name>Nexus Repository</name>
                    <url>http://192.168.4.4:8081/repository/maven-public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
                    <name>Nexus Repository</name>
                    <url>http://192.168.4.4:8081/repository/maven-public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
        <profile>
            <id>nexus-aliyun</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <repositories>
                <repository>
                    <id>aliyun</id>
                    <name>aliyun Repository</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>aliyun</id>
                    <name>aliyun Repository</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>

        <profile>
            <id>nexus-xrcloud</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <repositories>
                <repository>
                    <id>xrcloud</id>
                    <name>xrcloud Repository</name>
                    <url>http://42.56.90.105:8285/repository/maven-public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>xrcloud</id>
                    <name>xrcloud Repository</name>
                    <url>http://42.56.90.105:8285/repository/maven-public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>nexus-xrcloud</activeProfile>
        <activeProfile>jdk-1.8</activeProfile>
    </activeProfiles>
</settings>