2015年12月30日星期三

Nexus_003:配置 Nexus 2 私服

环境: OS X EI Capitan 10.11.2 + JDK 1.8.0_66 + Maven 3.3.9

1. 配置Maven从Nexus下载构件

修改~/.m2/settings.xml,增加profiles部分,定义构件仓库和插件仓库均指向私服,并激活。

<settings>

......
   <profiles>

        <!— Configure the Nexus repository —>

        <profile>
            <id>nexus</id>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <name>Nexus</name>
                    <layout>default</layout>
                    <url>http://localhost:8081/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>

            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
                    <name>Nexus</name>
                    <layout>default</layout>
                    <url>http://localhost:8081/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>

    </profile>

    <activeProfiles>
        <activeProfile>nexus</activeProfile>
    </activeProfiles>
......
</settings>

2. 配置镜像

为了所有的请求都首先通过私服,修改~/.m2/settings.xml,增加mirrors镜像部分。
<settings>
  ...... 

  <mirrors>
        <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <url>http://localhost:8081/nexus/content/groups/public/</url>
        </mirror>
  </mirrors>

  <profile>
            <id>nexus</id>
            <repositories>
                <repository>
                    <id>central</id>
                    <url>http://central/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>

            <pluginRepositories>
                <pluginRepository>
                    <id>central</id>
                    <url>http://central/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>

    </profile>
    ......
</settings>

(1)这样配置镜像后,所有的请求都会首先从私服走。
(2)这里重写中央仓库的目的是允许快照版构件的下载,覆盖了超级POM中中央仓库的配置。
其中的url配置无关紧要,因为已经通过私服与连接中央仓库了。
(3)当Maven需要下载构件时,首先检查central,看该类型的构件是否支持,如果支持,再根据镜像匹配原则转而问私服。

3. 配置 Nexus 认证

如果只为代理外部公共仓库,Nexus的代理仓库就已经满足需要了。
组织内部的构件和无法从公共仓库获取的第三方的构件,需要部署在 Nexus上的宿主仓库中。
为了安全起见,需要在~/.m2/settings.xml中设置认证信息。

<servers>

        <server>
            <id>nexus-releases</id>
            <username>admin</username>
            <password>welcome1</password>
        </server>

        <server>
            <id>nexus-snapshots</id>
            <username>admin</username>
            <password>welcome1</password>
        </server>

</servers>

参考文献:
1. 《Maven 实战》 徐晓斌著