一. 总思路

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

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

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

(1) 仓库

(2) 仓库目标

(3) 权限

(4) 角色

(5) 用户

4. 测试

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

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

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

二. 创建仓库

1. 创建仓库Foo Releases

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

2. 创建仓库Foo Snapshots

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

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

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

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

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入门基础:为项目分配独立的仓库实践(十七)

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

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

3. 仓库类型

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

四. 自定义仓库权限

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

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

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

 

 

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

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

 

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

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

Artifact Dowload:构件下载

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

Checksum Search:校验和搜索

 

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

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

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

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

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

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

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

六. 创建用户并绑定角色

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

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

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

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

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

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

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

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

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

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

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

<!-- foo项目私服用户名和密码:nopriv没有发布权限 -->
    <server>
        <id>foo-release</id>
        <username>nopriv</username>
        <password>123456</password>
    </server>
    
    <server>
        <id>foo-snapshot</id>
        <username>nopriv</username>
        <password>123456</password>
    </server>

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

<!-- 部署Maven构件到私服 -->
    <distributionManagement>
        <!-- 发行版仓库 -->
        <repository>
            <id>foo-release</id>                 #和配置的server id要对应上
            <name>foo release repository</name>
            <url>http://192.168.0.105:8086/nexus/content/repositories/FooReleases/</url>    #对应Foo-Releases的url
        </repository>
        <!-- 快照版仓库 -->
        <snapshotRepository>
            <id>foo-snapshot</id>
            <name>foo snapshot repository</name>
            <url>http://192.168.0.105:8086/nexus/content/repositories/FooSnapshots/</url>    #对应Foo-Snapshots的url
        </snapshotRepository>
    </distributionManagement>

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

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

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

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

发现报错,说明没有权限

[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配置

<!-- foo项目私服用户名和密码:havepriv没有发布权限 -->
    <server>
        <id>foo-release</id>
        <username>havepriv</username>
        <password>123456</password>
    </server>
    
    <server>
        <id>foo-snapshot</id>
        <username>havepriv</username>
        <password>123456</password>
    </server>

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

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

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

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

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

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

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

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

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

 

相关文章:

  • 2022-01-11
  • 2021-06-29
  • 2021-09-09
  • 2022-12-23
  • 2021-06-03
  • 2021-05-17
  • 2022-12-23
  • 2021-12-06
猜你喜欢
  • 2021-11-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-28
  • 2022-01-25
  • 2022-12-23
相关资源
相似解决方案