Maven-远程仓库配置、认证与部署

实际项目中,默认的中央仓库无法满足项目的需要,可能项目需要的构件存在于另外一个远程仓库中,如JBoss Maven。这时,可在POM中配置该仓库。

在repositories元素下,可以使用repository子元素声明一个或者多个远程仓库。上例中声明了一个id为jboss,名称为JBoss Repository的仓库。任何一个仓库声明的id必须是唯一的,尤其需要注意的是,Maven自带的中央仓库使用的id是central,如果其他的仓库声明也使用该id,就会覆盖中央仓库的配置。配置中的url指向了仓库的地址,一般来说,该地址都基于http协议,用户可以在浏览器中打开仓库地址浏览构件。

releases和snapshots元素比较重要,它们用来控制Maven对于发布版本构件和快照版本构件的下载。releases的子元素enabled值为true,表示开启JBoss仓库的发布版本下载支持,snapshots的enabled值为false,表示关闭JBoss仓库的快照版本下载支持。因此,Maven只会从JBoss仓库下载发布版的构件,而不会下载快照版的构件。

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

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

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

-------------------------------------------------------------------

有时候处于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库。例如,组织内部有一个Maven仓库服务器,该服务器为每个项目都提供独立的Maven仓库,为了防止非法的仓库访问,管理员为每个仓库提供了一组用户名和密码。这时,为了能让Maven访问仓库内容,就需要配置认证信息。

配置认证信息和配置仓库信息不同,仓库信息可以直接配置在POM文件中,但是认证信息必须配置在settings.xml文件中。因为POM往往是被提交到代码仓库中供所有成员访问的,而settings.xml一般只放在本机。因此,在settings.xml中配置认证信息更为安全。

以上配置中,该仓库的认证用户名为repo-user,认证密码为repo-pwd,关键是id元素,settings.xml中server元素的id必须与pom中需要认证的respository元素的id完全一致。正是这个id将认证信息与仓库配置联系在了一起。

-------------------------------------------------------------------

Maven除了能对项目进行编译、测试、打包之外,还能将项目生成的构件部署到仓库中,编辑pom文件。

distributionManagement包含repository和snapshotRepository子元素,前者表示发布版本构件的仓库,后者表示快照版本的仓库。这两个元素下都需要配置id、name和url,id为该远程仓库的唯一标识,name是为了方便人阅读,url标识仓库的地址。往远程仓库部署构件的时候,往往需要认证,配置方式参照上文,简言之,就是需要在settings.xml中创建一个server元素,其id与仓库的id匹配,并配置正确的认证信息。不论是从远程仓库下载构件,还是部署构件至远程仓库,当需要认证的时候,配置方式是一样的。

执行命令mvn clean deploy,Maven就会将项目构建输出的构件部署到配置对应的远程仓库。如果项目当前的版本是快照版本,则部署到快照版本仓库地址。否则就部署到发布版本仓库地址。

出自《Maven实战》-许晓斌

猜你喜欢

转载自blog.csdn.net/tjsahwj/article/details/84338110