首页 » Maven实战 » Maven实战全文在线阅读

《Maven实战》9.5 配置Maven从Nexus下载构件

关灯直达底部

6.4节与7.5.1节已经详细介绍了如何在POM中为Maven配置仓库和插件仓库。例如,当需要为项目添加Nexus私服上的public仓库时,可以按代码清单9-1所示配置。

代码清单9-1 在POM中配置Nexus仓库

这样的配置只对当前Maven项目有效,在实际应用中,我们往往想要通过一次配置就能让本机所有的Maven项目都使用自己的Maven私服。这个时候读者可能会想到settings.xml文件,该文件中的配置对所有本机Maven项目有效,但是settings.xml并不支持直接配置repositories和pluginRepositories。所幸Maven还提供了Profile机制,能让用户将仓库配置放到setting.xml中的Profile中,如代码清单9-2所示。

代码清单9-2 在settings.xml中配置Nexus仓库

该配置中使用了一个id为nexus的profile,这个profile包含了相关的仓库配置,同时配置中又使用activeProfile元素将nexus这个profile激活,这样当执行Maven构建的时候,激活的profile会将仓库配置应用到项目中去。关于Maven Profile,本书后面还会有专门的章节进一步介绍。

代码清单9-2中的配置已经能让本机所有的Maven项目从Nexus私服下载构件。细心的读者可能会注意到,Maven除了从Nexus下载构件之外,还会不时地访问中央仓库central,我们希望的是所有Maven下载请求都仅仅通过Nexus,以全面发挥私服的作用。这个时候就需要借助于6.7节提到的Maven镜像配置了。可以创建一个匹配任何仓库的镜像,镜像的地址为私服,这样,Maven对任何仓库的构件下载请求都会转到私服中。具体配置见代码清单9-3。

代码清单9-3 配置镜像让Maven只使用私服

关于镜像、profile及profile激活的配置不再赘述,这里需要解释的是仓库及插件仓库配置,它们的id都为central,也就是说,覆盖了超级POM中央仓库的配置,它们的url已无关紧要,因为所有请求都会通过镜像访问私服地址。配置仓库及插件仓库的主要目的是开启对快照版本下载的支持,当Maven需要下载发布版或快照版构件的时候,它首先检查central,看该类型的构件是否支持,得到正面的回答之后,再根据镜像匹配规则转而访问私服仓库地址。