【发布时间】:2015-06-19 11:55:02
【问题描述】:
我目前正在评估 Nexus,看看它是否能满足我们公司的要求。我似乎在手册中找不到我需要的东西,所以我想在放弃之前先问问。
我们有严格的要求,只有经过专门授权的 OSS 库(及其依赖项)才能用于开发。我们希望在不放弃传递依赖的自动解析的情况下实现这一点,因此 Nexus 似乎是一个很好的工具。
我们的想法是,我们可以将所有代理存储库保持在“阻塞”模式,从而允许 Nexus 提供本地缓存的工件,但如果构建请求尚未缓存的内容,则拒绝上网。
“OSS 管理员”(人)然后会使用他的管理员 ID 登录,使存储库退出“阻止”模式,然后以某种方式告诉 Nexus 下载他想要授权的库列表。在所有库及其依赖项都已本地缓存后,他会将存储库重新置于“阻塞”模式。
我似乎找不到告诉 Nexus 从 UI 下载库及其依赖项的方法。 “OSS Manager”不是开发人员,因此每次想要添加授权库时都设置自定义 Maven 或 Gradle 构建不是一种选择。
我可以使用裸 Nexus(或者插件?)来实现这一点,还是我需要编写一个自定义应用程序,“OSS 管理器”将使用该应用程序根据所需库的列表生成一个虚假的 Maven 构建,以及然后在 Nexus 实例处于“Unblocked”状态时对其运行该构建?
【问题讨论】:
-
Nexus Pro 功能称为采购套件:books.sonatype.com/nexus-book/reference/procure.html
-
奇怪的是,采购套件仍然无法让管理员采购特定的工件及其所有依赖项。它所做的只是设置简单的规则来匹配工件名称以允许或禁止采购。解决依赖关系仍然留给外部构建,这意味着“OSS Manager”在没有开发人员直接支持的情况下无法完成他的工作。
-
这是一个复杂的话题,没有简单的答案。事实上,每个项目的依赖树或多或少都是唯一的,并且取决于在特定 POM 中选择了哪个版本的依赖。 Sonatype 生成的规则需要在外部生成。我建议与拥有其他商业许可证管理软件的 Sonatype 交谈