Maven实战——远道仓库的配置

Maven实战——远程仓库的配置

远程仓库的配置
在很多情况下,默认的*仓库无法满足项目的需求,可能项目需要的构件存在于另外一个远程仓库中
如JBoss仓库:

<project>
...
    <repositories>
        <repository>
            <id>jboss</id>
            <name>JBoss Repository</name>
            <url>http://repository.jboss.com/maven2/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <layout>default</layout>
        </repository>
    </repositories>
    ...
</project>

在repositories元素下,可以使用子元素repository元素声明一个或者多个远程仓库。
对于releases和snapshots来说,除了enabled还包括另外两个子元素updatePolicy和ChecksumPolicy:

<snapshots>
    <enabled>true</enabled>
    <updatePolicy>daily</updatePolicy>
    <checksumPolicy>ignore</checksumPolicy>
</snapshots>

updatePolicy用来配置Maven从远程仓库检查跟新的频率,默认是daily,never从不检查,interval:X——每隔X分钟检查一次更新。
checksumPolicy用来配置Maven检查校验和文件的策略。默认未warn:构建时输出警告信息,fail:遇到错误就构建失败,ignore:使Maven完全忽略掉校验和错误。
远程仓库的认证
配置认证信息和仓库信息不同,配置仓库信息直接在pom文件中进行配置,但是配置认证信息需在settings.xml中配置认证信息更为安全。假设需要配置一个id为my-proj的仓库认证信息,如下:

<settings>
...
    <servers>
        <server>
            <id>my-proj</id>
            <username>repo-user</username>
            <password>repo-pwd</password>
        </server>
    </servers>
...
</settings>

部署至远程仓库
Maven除了对项目进行编译、测试、打包之外,还能项目生成构建部署到仓库中,需要编辑pom.xml如下:

<project>
    ...
    <distributionManagement>
        <repository>
            <id>proj-releases</id>
            <name>Proj Release Repository</name>
            <url>http://192.168.1.100/content/repositories/proj-releases</url>
        </repository>
        <snapshotRepository>
            <id>proj-snapshots</id>
            <name>Proj Snapshot Repository</name>
            <url>http://192.168.1.100/content/repositories/proj-releases</url>
        </snapshotRepository>
    </distributionManagement>
    ...
</project>

repository和snapshotRepository子元素前者表示发布版本构件的仓库,后者表示快照版本的仓库。
往远程仓库部署构件的时候往往需要认证,简而言之,就是需要在settings.xml中创建一个Server元素,其id与仓库的id匹配,并且配置正确的认证信息。不论从远程仓库下载构件还是部署构件到远程仓库,当需要认证的时候,配置的方式是一样的。
配置正确之后,运行mvn clean deploy,Maven就会将项目构建输出的构件部署到配置的远程仓库上。