gpt4 book ai didi

eclipse - 将 Eclipse 包导入 Maven : How to map versions?

转载 作者:行者123 更新时间:2023-12-01 05:41:09 24 4
gpt4 key购买 nike

我正在研究 Project Dash,特别是一组将 Eclipse 包(如 org.eclipse.swt.gtk.linux.x86_64_3.6.2.v3659b.jar)导入到 Maven 2 存储库的工具。我们在周末和 here is the result: A testing Maven 2 repository containing most of Eclipse 3.6.2 上运行了这些工具.

在转换过程中,我们遇到了一个没有简单解决方案的问题:大多数 Eclipse 包要么不请求特定版本,要么请求一个版本范围。所以我们都有:

Require-Bundle: org.eclipse.core.runtime


Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)"

在转换过程中,工具收集所有bundle的所有版本,如果我们需要为上面的例子写一个POM,我们写出我们收集到的版本(在这个例子中就是3.6.2)。在小写中,我们不考虑版本范围。到目前为止没有问题。

现在一个新版本出来了,比如说 3.7。当我们转换它时,第一个 POM 的新版本 3.7.0 被创建并且它依赖于 org.eclipse.core:org.eclipse.core.runtime:3.7.0而第二个是使用与以前相同的版本范围创建的。

注意:我们现在有四个 POM(两个用于 3.6.2,两个用于 3.7)。一个依赖于 core.runtime 3.6.2,一个依赖于 3.7.0,两个版本范围为 [3.2.0,4.0.0)
这是已发布的,您无需更改任何内容。你没有更新到 3.7.0!

现在我们遇到了一个问题:如果您在构建中使用这两个版本为 3.6.2 的 Artifact ,那么第一个仍将使用核心运行时 3.6.2,因为它的版本被锁定。

但是第二个将更新 Maven 元数据并看到“哦,我们也有 3.7”,下载并爆炸,你最终会得到 org.eclipse.core:org.eclipse.core.runtime:3.7 org.eclipse.core:org.eclipse.core.runtime:3.6.2在您的类路径中 无需改变您身边的任何东西 .

那很糟。我们应该如何解决?

最佳答案

好吧,您的类路径中不会同时包含 3.7 和 3.6.2 - Maven 将采用最高版本,因此您将升级到 3.7(这可能不是 Eclipse Maven Artifact 的用户想要或希望的)。

鉴于(据我所知)Eclipse 同时发布了它的所有组件,您不能忽略捆绑版本范围(来自第二个示例)并将版本依赖项硬编码到当前版本(就像您正在做的那样)对于第一个示例)?

关于eclipse - 将 Eclipse 包导入 Maven : How to map versions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5371174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com