有时候默认的中央仓库无法满足项目的需求,可能项目需要的构件存在与另外一个远程仓库中,如JBoss Maven仓库。这时可以在POM中配置该仓库如下:
<repositories>
<repository>
<id>jboss</id>
<name>JBoss Repository</name>
<url>http://repository.jboss.com/maven2/</url>
<layout>default</layout>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
</repositories>
<snapshots><enabled>false</enabled></snapshots>
</repository>
</repositories>
该例中的release的enabled值为true表示开启JBoss仓库的发布版本下载支持,而snapshots的enabled值为false,表示关闭JBoss仓库的快照版本的下载支持。对于releases和snapshots来说,除了enabled它们还包涵另外两个子元素updatePolicy和checksumPolicy:
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</snapshots>
元素updatePolicy用来配置maven远程仓库检查更新的频率,默认值是daily,表示maven每天检查一次。其他可用的值包括:never-从不检查更新;always-每次构建都检查更新;interval:X-每隔X分钟检查一次更新。
元素checksumPolicy用来配置maven检查检验和文件的策略。当构件被部署到maven仓库中时,会同时部署对应的检验和文件。在下载构件的时候maven会验证校验和文件,如果校验和验证失败默认为warn:warn-maven会在执行构建是输出警告信息;fail-maven遇到校验和错误就让构建失败;ignore-使maven完全忽略校验和错误。
远程仓库的认证:大部分远程仓库无须认证就可以访问,但有时出于安全方面的考虑我们需要提供认证信息才能访问一些远程仓库。配置认证信息和配置仓库信息不同,仓库信息可以直接配置在POM文件中,但是认证信息必须配置在settings.xml中。这是因为POM往往是被提交到代码库中提供所有成员访问的,而settings.xml一般只放在本机。因此在settings.xml中配置认证信息更为安全。假设需要为一个id为my-proj的仓库配置认证信息,编辑settings.xml文件如下:
<servers>
<server>
<id>my-proj</id>
<username>username</username>
<password>password</password>
</server>
</servers>
部署至远程仓库:无论日常开发中生成的构件还是正式版本发布的构件都需要部署到仓库中供其他团队成员使用。maven除了能对项目进行编译测试打包之外还能将项目生成的构件部署到仓库中。首先需要编辑项目的POM文件,加入distributionManagement元素如下:
<distributionManagement>
<repository>
<id>proj-releases</id>
<name>Proj Releases Repository</name>
<url>http://192.168.1.100/content/proj-releases</url>
</repository>
<snapshotRepository>
<id>proj-snapshots</id>
<name>Proj Snapshots Repository</name>
<url>http://192.168.1.100/content/proj-snapshot</url>
</snapshotRepository>
</distributionManagement>
配置正确后在命令行中运行
mvn clean deploy