如何在Nexus中创建仅含选定Maven包的精选仓库?
完全可以实现你要的需求,结合Nexus的Proxy仓库和Hosted仓库,再配合路由规则与权限设置就能达成统一标准化套件、限制随意下载的目标,具体操作如下:
创建Hosted类型仓库存放精选包
新建一个Hosted类型的Maven仓库(比如命名为maven-approved),用来手动上传你从Maven Central筛选好的指定版本包,也可以从后续配置的Proxy仓库里同步选定的包到这里。记得给这个仓库设置权限:只有管理员能上传/修改,普通开发者仅开放只读权限。配置Proxy仓库的白名单规则(自动拉取指定包)
如果不想手动上传,想从Maven Central自动拉取指定包,就新建一个Proxy仓库(比如maven-central-approved),源地址指向Maven Central。然后在这个仓库的路由规则里添加白名单:只允许匹配你指定的包路径(比如com/example/utils/*、org/springframework/boot/spring-boot/2.7.12/*这类精确路径),拒绝所有其他请求。同时开启缓存策略,只保留你指定的版本,定期清理缓存里的非授权包。组合成Group仓库(方便开发者统一访问)
新建一个Group类型的Maven仓库(比如maven-standard),把上面的Hosted和Proxy仓库都加进去。让组织内所有开发者的项目都把这个Group仓库设为唯一的Maven源,这样他们只能获取到你批准的包和版本。额外权限加固
在Nexus的权限管理里,禁止开发者直接访问原始的Maven Central Proxy仓库,只能访问你创建的Group仓库。还可以开启仓库的内容选择器,进一步限制只能下载指定版本的包,比如拒绝所有快照版本,只允许特定发布版本。
内容的提问来源于stack exchange,提问作者Yash

