maven入门基础:为项目分配独立的仓库实践(十七)

一. 总思路

1. 需求:不同项目组有不同的开发人员,为了仓库的安全管理,需要为项目不同的仓库,并且将仓库的部署、修改和删除权限赋给该项目组的成员,其他用户只能读、下载和搜索该仓库的内容

2. 假设:一个新项目foo有独立的项目组成员、独立仓库,只有项目组成员才有权限部署仓库

3. 总体思路(从下到上)

(1) 仓库

(2) 仓库目标

(3) 权限

(4) 角色

(5) 用户

4. 测试

(1) 有权限用户部署构件

(2) 无权限用户部署构件

(3) 从仓库下载自定义构件

二. 创建仓库

1. 创建仓库Foo Releases

maven入门基础:为项目分配独立的仓库实践(十七)_第1张图片

2. 创建仓库Foo Snapshots

maven入门基础:为项目分配独立的仓库实践(十七)_第2张图片

3. 把这两个仓库加入仓库组

maven入门基础:为项目分配独立的仓库实践(十七)_第3张图片

三. 创建仓库目标(请求路径过滤)

1. 概念:匹配请求路径中哪些路径才是合法的,请求路径的组成格式是:http://仓库地址/groupId/artfactId/版本号

http://192.168.0.105:8086/nexus/content/repositories/snapshots/com/lemon/java/java_07_maven/1.0-SNAPSHOT/java_07_maven-1.0-20200131.092633-1.jar 

仓库地址:
192.168.0.105:8086/nexus/content/repositories/snapshots
groupId:com/lemon/java
artfactId:java_07_maven #项目名
版本号:1.0-SNAPSHOT

分别对应pom.xml中的groupId、artfactId、version

maven入门基础:为项目分配独立的仓库实践(十七)_第4张图片

 2. 格式:匹配的格式是正则表达式,*表示通配

maven入门基础:为项目分配独立的仓库实践(十七)_第5张图片

3. 仓库类型

maven入门基础:为项目分配独立的仓库实践(十七)_第6张图片

四. 自定义仓库权限

1. 系统预设权限(不可修改)

(1) 仓库浏览:Repository View,在创建仓库的时候自动添加的权限

maven入门基础:为项目分配独立的仓库实践(十七)_第7张图片

 

 

(2) 仓库目标:Repository Target,是针对所有仓库(不包括自定义仓库)的增删查改权限

 

(3) 应用:Application,针对系统访问资源的控制,比如

Scheduled Task Types - (read):执行的任务浏览

Artifact Dowload:构件下载

User Set Password - (create, read):用户密码设置

Checksum Search:校验和搜索

 

2. 自定义权限:基于仓库和仓库目标创建权限

(1) 创建发布型仓库:Foo Releases权限

maven入门基础:为项目分配独立的仓库实践(十七)_第8张图片

maven入门基础:为项目分配独立的仓库实践(十七)_第9张图片

maven入门基础:为项目分配独立的仓库实践(十七)_第10张图片

这里的权限包括:创建权限、修改权限、删除权限、读取权限、浏览权限(系统预设)

(2) 创建快照型仓库:Foo Snapshots权限

基本同Foo Releases,只是相关说明改改即可,完成后的结果界面

 

 

五. 自定义创建角色并绑定权限

1. 创建一个Foo-deployer的角色,该角色具有Foo-Releases和Foo-Snapshots的所有权限

maven入门基础:为项目分配独立的仓库实践(十七)_第11张图片

maven入门基础:为项目分配独立的仓库实践(十七)_第12张图片

maven入门基础:为项目分配独立的仓库实践(十七)_第13张图片

注意:这里可以根据需求创建不同的角色,不同的角色不同的权限,比如角色A拥有全部权限,角色B拥有读权限,然后不同的角色又可以分配给不同的用户,这样就达到了不同用户可以拥有不同的权限的目的

maven入门基础:为项目分配独立的仓库实践(十七)_第14张图片

2. 创建一个baseroles的角色,该角色只具有系统预设的基本权限,没有发布的权限

maven入门基础:为项目分配独立的仓库实践(十七)_第15张图片

六. 创建用户并绑定角色

1. 创建用户havepriv,添加Foo-deployee角色,拥有发布权限

maven入门基础:为项目分配独立的仓库实践(十七)_第16张图片

maven入门基础:为项目分配独立的仓库实践(十七)_第17张图片

maven入门基础:为项目分配独立的仓库实践(十七)_第18张图片

maven入门基础:为项目分配独立的仓库实践(十七)_第19张图片

2. 同样地,创建用户nopriv,添加baseroles角色,该角色只拥有系统预设的权限,没有发布权限

maven入门基础:为项目分配独立的仓库实践(十七)_第20张图片

七. 测试无权限用户部署构件

1. 创建一个新的项目:myjartest,里面写一些代码

maven入门基础:为项目分配独立的仓库实践(十七)_第21张图片

2. 修改settings.xml,添加配置


    <server>
        <id>foo-releaseid>
        <username>noprivusername>
        <password>123456password>
    server>
    
    <server>
        <id>foo-snapshotid>
        <username>noprivusername>
        <password>123456password>
    server>

3. 修改pom.xml,添加配置


    <distributionManagement>
        
        <repository>
            <id>foo-releaseid>                 #和配置的server id要对应上
            <name>foo release repositoryname>
            <url>http://192.168.0.105:8086/nexus/content/repositories/FooReleases/url>    #对应Foo-Releases的url
        repository>
        
        <snapshotRepository>
            <id>foo-snapshotid>
            <name>foo snapshot repositoryname>
            <url>http://192.168.0.105:8086/nexus/content/repositories/FooSnapshots/url>    #对应Foo-Snapshots的url
        snapshotRepository>
    distributionManagement>

4. 可以先编译下,不报错的话再执行下一步

maven入门基础:为项目分配独立的仓库实践(十七)_第22张图片

5. 在工程目录下使用mvn deploy进行发布

maven入门基础:为项目分配独立的仓库实践(十七)_第23张图片

发现报错,说明没有权限

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project myjartest: Fail
ed to deploy artifacts: Could not transfer artifact com.maven.test:myjartest:jar:1.0-20200201.043755-1 from/to foo-snapshot (http:
//192.168.0.105:8086/nexus/content/repositories/FooSnapshots/): Access denied to: http://192.168.0.105:8086/nexus/content/reposito
ries/FooSnapshots/com/maven/test/myjartest/1.0-SNAPSHOT/myjartest-1.0-20200201.043755-1.jar, ReasonPhrase: Forbidden. -> [Help 1]

八. 测试有权限用户部署构件

1. 只需要修改settings.xml中的server配置


    <server>
        <id>foo-releaseid>
        <username>haveprivusername>
        <password>123456password>
    server>
    
    <server>
        <id>foo-snapshotid>
        <username>haveprivusername>
        <password>123456password>
    server>

2. 重新使用mvn deploy进行发布,可以看到发布成功

maven入门基础:为项目分配独立的仓库实践(十七)_第24张图片

3. 验证nexus,可以看到已经发布了jar包

maven入门基础:为项目分配独立的仓库实践(十七)_第25张图片

九. 从仓库获取自定义构件

新建一个项目:verifyjartest,这个项目用来获取和调用上面发布的jar包。配置pom.xml,拉取到jar包再调用验证,发现结果正确

maven入门基础:为项目分配独立的仓库实践(十七)_第26张图片

maven入门基础:为项目分配独立的仓库实践(十七)_第27张图片

maven入门基础:为项目分配独立的仓库实践(十七)_第28张图片

 

你可能感兴趣的:(maven入门基础:为项目分配独立的仓库实践(十七))