保持 Maven 传递依赖满足的好策略是什么
What is the good strategy to maintain Maven transitive dependency satisfied
我最近在构建我们的产品时遇到了找回传递依赖的 Maven 工件的困难,这引发了我思考处理这种情况的正确策略是什么。
在我的产品构建中CI,我需要使用一个我们可以看到的名为Maven-Unix-Plugin的插件。这个插件传递依赖函数-java,我们不可见。
我们有一个 Nexus 存储库,它是 Maven 存储库的代理。因此,在理想情况下,我们不需要存储 maven-unix-plugin 或 functional-java.
然而,我发现maven-unix-plugin的预期版本仍然存在于Maven仓库中,但是其依赖版本functional-java消失了!更讽刺的是,对于所有版本的maven-unix-plugin,其依赖版本的functional-java消失了!总之maven-unix-plugin不能用了!
简单来说,这听起来是 Maven 存储库的完整性问题。但是,我的主要想法是我们如何才能避免这种情况发生?现在,我设法找回旧版本的 functional-java 并将其放入我们的 Nexus 中。然而,首先,我们不可能找出所有的传递依赖项并将它们全部放入我们的 Nexus 中。 Maven 的理想情况是我们不应该被要求那样做!
当然,如果我们不断地构建和维护我们的系统(理想情况下不断更新依赖版本),我们应该不会遇到这个问题。然而,我们是一个非常小的团队来维护一长串庞大的遗留系统。该产品的最后一次构建实际上是 2 年前!
任何绝妙的见解是什么是将来发生这种令人头疼的问题的好策略?
首先,MavenCentral 很少删除工件,只有在绝对必要时才会删除。所以这个问题很可能不会再打击你了。
如果您想确保不再出现此问题,请确保备份您的 Nexus 存储库。通过您的 Nexus 从 MavenCentral 提取的所有工件都将存储在您的 Nexus 存储中。因此,即使 MavenCentral 明天完全消失,它们仍将存在于您的 Nexus 中。
我最近在构建我们的产品时遇到了找回传递依赖的 Maven 工件的困难,这引发了我思考处理这种情况的正确策略是什么。
在我的产品构建中CI,我需要使用一个我们可以看到的名为Maven-Unix-Plugin的插件。这个插件传递依赖函数-java,我们不可见。
我们有一个 Nexus 存储库,它是 Maven 存储库的代理。因此,在理想情况下,我们不需要存储 maven-unix-plugin 或 functional-java.
然而,我发现maven-unix-plugin的预期版本仍然存在于Maven仓库中,但是其依赖版本functional-java消失了!更讽刺的是,对于所有版本的maven-unix-plugin,其依赖版本的functional-java消失了!总之maven-unix-plugin不能用了!
简单来说,这听起来是 Maven 存储库的完整性问题。但是,我的主要想法是我们如何才能避免这种情况发生?现在,我设法找回旧版本的 functional-java 并将其放入我们的 Nexus 中。然而,首先,我们不可能找出所有的传递依赖项并将它们全部放入我们的 Nexus 中。 Maven 的理想情况是我们不应该被要求那样做!
当然,如果我们不断地构建和维护我们的系统(理想情况下不断更新依赖版本),我们应该不会遇到这个问题。然而,我们是一个非常小的团队来维护一长串庞大的遗留系统。该产品的最后一次构建实际上是 2 年前!
任何绝妙的见解是什么是将来发生这种令人头疼的问题的好策略?
首先,MavenCentral 很少删除工件,只有在绝对必要时才会删除。所以这个问题很可能不会再打击你了。
如果您想确保不再出现此问题,请确保备份您的 Nexus 存储库。通过您的 Nexus 从 MavenCentral 提取的所有工件都将存储在您的 Nexus 存储中。因此,即使 MavenCentral 明天完全消失,它们仍将存在于您的 Nexus 中。