Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Nexus:实现;删除“;工件的潜在危险版本_Java_Maven - Fatal编程技术网

Java Nexus:实现;删除“;工件的潜在危险版本

Java Nexus:实现;删除“;工件的潜在危险版本,java,maven,Java,Maven,考虑以下场景:工件作为“发布”发布到公司Maven存储库。一段时间后,人们注意到(在生产中)使用此工件是危险的,也就是说,它可能会破坏数据库的数据、向客户发送大量电子邮件或类似的内容。处理这个问题的最佳(Maven)方法是什么 到目前为止,应用的策略是从Nexus和构建服务器的本地存储库中删除工件(当然,还要告诉所有人发生了什么)。这种策略有一些缺点:首先,开发人员仍然可以在本地构建中使用工件。其次,从存储库中删除工件通常不利于重现bug/情况 我们考虑在Maven构建生命周期中实现一个“阻止列

考虑以下场景:工件作为“发布”发布到公司Maven存储库。一段时间后,人们注意到(在生产中)使用此工件是危险的,也就是说,它可能会破坏数据库的数据、向客户发送大量电子邮件或类似的内容。处理这个问题的最佳(Maven)方法是什么

到目前为止,应用的策略是从Nexus和构建服务器的本地存储库中删除工件(当然,还要告诉所有人发生了什么)。这种策略有一些缺点:首先,开发人员仍然可以在本地构建中使用工件。其次,从存储库中删除工件通常不利于重现bug/情况


我们考虑在Maven构建生命周期中实现一个“阻止列表插件”,该插件读取一个公司全局阻止列表,并在出现一个阻止的工件时中断构建。但我们欢迎任何其他“最佳实践”来解决这个问题。

另一种选择是使用Enforcer插件(如果您有公司范围的POM),并完全禁止这种依赖性,如果任何人试图使用它,那么构建失败。如果这些构件已经从存储库中删除,开发人员可以在它自己的机器上使用它。但是您的CI服务器将显示出一些错误……这是部署的基础……使用@ Tunaki的想法,所有项目都需要更新到公司范围的父级版本,包括Enforcer插件。这可能是一个可行的解决方案,也可能不是,这取决于企业中项目的数量。Maven有重新定位POM的概念,允许使用一组坐标的POM请求“指向”另一个应该使用的工件。我们没有理由使用它,但它可能适合您的用例。@khmarbaise我不太明白您想告诉我的内容。