Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
Eclipse rcp 同一产品中两个功能中的同一插件由于版本限定符而导致冲突_Eclipse Rcp_Tycho - Fatal编程技术网

Eclipse rcp 同一产品中两个功能中的同一插件由于版本限定符而导致冲突

Eclipse rcp 同一产品中两个功能中的同一插件由于版本限定符而导致冲突,eclipse-rcp,tycho,Eclipse Rcp,Tycho,我使用Tycho构建了多个Eclipse产品。我在Jenkins有一份工作,根据我的应用程序的每个功能,外加一份实用程序和一份产品 下图描述了我的设置: 在一个作业('A')中,我构建了一个插件('A')。其版本具有“限定符”占位符。该插件包含在两个不相关的功能中,每个功能都构建在单独的作业中(“B”和“C”)。这两项工作还构建特定的插件。最后,我有一个任务“D”,我的应用程序是使用这两个特性组装的 这两个特性都声明它们依赖于具有特殊版本“0.0.0”的插件,即最新版本。在编译时,每个特性都会

我使用Tycho构建了多个Eclipse产品。我在Jenkins有一份工作,根据我的应用程序的每个功能,外加一份实用程序和一份产品

下图描述了我的设置:

在一个作业('A')中,我构建了一个插件('A')。其版本具有“限定符”占位符。该插件包含在两个不相关的功能中,每个功能都构建在单独的作业中(“B”和“C”)。这两项工作还构建特定的插件。最后,我有一个任务“D”,我的应用程序是使用这两个特性组装的

这两个特性都声明它们依赖于具有特殊版本“0.0.0”的插件,即最新版本。在编译时,每个特性都会获得a.plugin并更改其限定符。这会导致每个功能中使用不同的限定符

有时我会遇到以下错误,导致构建失败:

[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: product.d 1.0.0
[ERROR]   Only one of the following can be installed at once: [plugin.a 1.2.3.1234, plugin.a 1.2.3.5678]
[ERROR]   Cannot satisfy dependency: product.d 1.0.0 depends on: feature.b 0.0.0
[ERROR]   Cannot satisfy dependency: product.d 1.0.0 depends on: feature.c 0.0.0
[ERROR]   Cannot satisfy dependency: feature.b 1.0.0 depends on: plugin.a [1.2.3.1234]
[ERROR]   Cannot satisfy dependency: feature.c 1.0.0 depends on: plugin.a [1.2.3.5678]

因此plugin.a只编译一次,你知道我能做些什么让我的产品解决这个错误冲突吗?

功能构建不会改变插件的限定符;它使用目标平台中提供的插件,无需修改。功能构建只修改进入功能JAR的文件,例如,它将引用插件的版本替换为feature.xml中的可用版本

因此,如果在构建作业D时出现上述故障,那么您的功能构建作业已经看到了plugin.a的不同版本。例如,当您的作业按以下顺序构建时会发生这种情况:A(builds plugin.A_1.2.3.1234)-B-A(builds plugin.A_1.2.3.5678)-C-D。当发生这种情况时,产品(作业D)的构建无法成功

但实际上,你应该问自己的问题是,你是否真的需要这种复杂的设置。功能构建接近于Tycho中的NOP,所以您可以始终与作业A中的插件一起构建功能


甚至还有一些潜在的方法可以使复杂的作业设置可靠地工作,例如,用插件引用替换其中一个功能中包含的插件,或者使用基于SCM的可复制构建限定符(非常高级!)。但在您的情况下,所有这些选项似乎都不值得付出努力。

我将检查A-B-A-C-D订单是否如您所期望的那样发生。Jobs B和C构建了这些特性以及许多特定的插件,我在问题中没有提到这些。我已经相应地更新了我的描述。