​1.Maven-简介​ 2.Maven-安装和配置​ 3.Maven-POM文件说明​ 4.Maven-坐标​ 5.Maven-依赖详解​ 6.Maven-仓库​ 7.Maven-生命周期和插件​    8.Maven-聚合​ 9.Maven-继承和反应堆​ 10.Maven-使用NEXUS创建私服​   11.Mavne-配置从NEXUS下载构件和为项目配置独立仓库​   12.Maven-使用Hudson进行持续集成及系统配置​  13.Maven-创建Hudson任务​  14.Maven-Hudson监视任务、用户管理、工作目录

11.1 配置Maven从Nexus下载构件


之前介绍了如何在POM中为Maven配置仓库和插件库。例如,当需要为项目添加Nexus私服上的public仓库时,可以按照如下配置:

11 Mavne-配置从NEXUS下载构件和为项目配置独立仓库_maven项目


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

11 Mavne-配置从NEXUS下载构件和为项目配置独立仓库_配置从Nexus下载构件_02



该配置中使用了一个id为 nexus的profile包含了相关的仓库配置,同时配置中又使用activeProfile元素将nexus这个profile激活,这样当执行Maven构件的时候,激活的profile会将仓库配置应用到项目中去。

如上图中的配置已经能让本机所有的Maven项目从Nexus私服下载构件。Maven除了从Nexus下载构件之外,还会不时地访问中央仓库central,我们希望的是所有Maven下载请求都仅仅通过Nexus,以全面发挥私服的作用。这个时候就需要借助之前提到的Maven镜像配置了。可以创建一个匹配任何仓库的镜像,镜像的地址为私服,这样,Maven对任何仓库的构件下载请求都会转到私服中。如下图配置


11 Mavne-配置从NEXUS下载构件和为项目配置独立仓库_maven配置独立仓库_03



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



11.2 部署构件至Nexus

如果只为代理外部公众仓库,那么Nexus的代理仓库就已经能够完全满足需要了。对于另一类Nexus仓库-宿主仓库来说,他们的主要作用是存储组织内部的,或者一些无法从公众仓库中获得的第三方构件,供大家下载使用。用户可以配置Maven自动部署构件至Nexus的宿主仓库,也可以通过界面手动上传构件。


11.2.1 使用Maven部署构件至Nexus

日常开发生成的快照版本构件可以直接部署到Nexus中策略为Snapshot的宿主仓库中,项目正式发布的构件应该部署到Nexus中策略为Release的宿主仓库中。POM的配置方式,如下图

11 Mavne-配置从NEXUS下载构件和为项目配置独立仓库_maven项目_04


Nexux的仓库对于匿名用户是只读的。为了能够部署构件,还需要在settings.xml中配置认证信息,如下图


11 Mavne-配置从NEXUS下载构件和为项目配置独立仓库_maven_05


11.3 为项目分配独立的仓库

在组织内部,如果所有项目都部署快照及发布版本构件至同样的仓库,就会存在潜在的冲突问题及安全问题,我们不想让项目A的部署影响到了项目B,反之亦然。解决的办法就是为每个项目分配独立的仓库,并且只将仓库的部署、修改和删除赋予该项目的成员,其他用户只能读取、下载和搜索该仓库的内容。

假设项目名称为 A ,首先为该项目建立两个宿主仓库 A Snapshots 和 A Releases,分别用来部署快照构件和发布构件。然后再创建一些增删改查的权限。