【maven实战】35-为项目分配独立的仓库
在组织内部,如果所有项目都部署快照及发布版本构件至同样的仓库,就会存在潜在的冲突及安全问题,我们不想让项目A的部署影响到项目B,反之亦然。解决的方法就是为每个项目分配独立的仓库,并且只将仓库的部署,修改,删除权限赋予该项的成员,其他用户只能读取,下载和搜索该仓库的内容。
假设项目名臣为Foo,首先为该项目建立两个宿主仓库Foo Snapshot和Foo Release,分别用来部署快照构件和发布构件。有了仓库之后,就需要创建基于仓库的增,删,改,查权限。在Nexus中,这样的权限是基于Repository Target建立的,Repository Target实际上是一系列正则表达式--匹配,以检查权限是否正确。单击左边导航栏中的Repository Targets链接,就能看到如下的页面:
图中选中了All(Maven2)这一Repository Target,在下方可以看到他包含了一个值为*的正则表达式,表示该Repository Target能够匹配仓库下的任何路径。
下一步就是基于该Repository Target和Foo Release,Foo Snapshots两个仓库建立权限。单击页面左边导航栏中的Privileges链接进入权限页面,然后单击Add按钮,选择Repository Target Privilege,创建对应于Foo Release的权限。
选择Foo Release仓库和All(Maven2),表示创建匹配Foo Release仓库任何路径的权限。单击Save按钮之后,就能在权限列表中看到相应的增,删,改,查权限。如下:
然后遵循同样的步骤,为Foo Snapshot建立增删改查权限。
下一步是创建一个包含上述权限的角色。单击导航栏中的Roles进入页面,再单击页面上方的Add按钮并选择Nexus Role,将之前创建的权限加入到该角色中。
角色创建完成之后,根据需要将其分配给Foo项目的团队成员。这样其他团队的成员默认只能读取Foo Release和Foo Snapshot的内容,而拥有Foo Deployer角色的用户就可以执行部署构件等操作。