Eclipse 2018-12依赖于Windows,Linux和MacOS

问题描述 投票:0回答:1

我刚刚从Eclipse 4.9更新了我的应用程序的org.eclipse.e4.rcp功能。至4.10(或2012-09至2012-12)。现在我得到了例外:

[ERROR] Cannot resolve target definition:
[ERROR]   Problems resolving provisioning plan.:
[ERROR]      Unable to satisfy dependency from org.eclipse.swt 3.109.0.v20181204-1801 to org.eclipse.equinox.p2.iu; org.eclipse.swt.gtk.linux.x86_64 [3.109.0.v20181204-1801,3.109.0.v20181204-1801].
[ERROR]      Unable to satisfy dependency from org.eclipse.swt 3.109.0.v20181204-1801 to org.eclipse.equinox.p2.iu; org.eclipse.swt.cocoa.macosx.x86_64 [3.109.0.v20181204-1801,3.109.0.v20181204-1801].
[ERROR]      Unable to satisfy dependency from org.eclipse.swt 3.109.0.v20181204-1801 to org.eclipse.equinox.p2.iu; org.eclipse.swt.gtk.linux.ppc64le [3.109.0.v20181204-1801,3.109.0.v20181204-1801].

.target文件和pom.xml都将目标平台定义为仅适用于Windows:

<environment>
    <os>win32</os>
    <ws>win32</ws>
    <arch>x86_64</arch>
</environment>

目标文件还有includeAllPlatforms="false"。如果我将其设置为true,我会得到非常相似的异常:

[ERROR]   Software being installed: org.acme.plugin 7.0.0.qualifier
[ERROR]   Missing requirement: org.eclipse.swt 3.109.0.v20181204-1801 requires 'org.eclipse.equinox.p2.iu; org.eclipse.swt.gtk.linux.x86_64 [3.109.0.v20181204-1801,3.109.0.v20181204-1801]' but it could not be found
[ERROR]   Cannot satisfy dependency: org.acme.plugin 7.0.0.qualifier depends on: java.package; org.eclipse.jface.preference 0.0.0
[ERROR]   Cannot satisfy dependency: org.eclipse.jface 3.15.0.v20181123-1505 depends on: osgi.bundle; org.eclipse.swt [3.104.0,4.0.0)

如果我将片段添加到目标平台,我会收到以下消息(这是完全可以理解的):

org.eclipse.swt.gtk.linux.x86_64 3.109.0.v20181204-1801 cannot be installed in this environment because its filter is not applicable. -> [Help 1]

将目标平台设置为planner模式不起作用。也没有在pom.xml中设置<org.eclipse.swt.buildtime>true</org.eclipse.swt.buildtime>false也不起作用)。

查看该功能的XML文件,我看不出它有什么问题(片段只针对他们的操作系统定义),目标平台仍然希望避开Linux和MacOS的片段,即使我在Windows上。

目标平台看起来像这样(再次,如果我用2018-09替换2018-12)它会起作用:

<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
  <repository location="https://download.eclipse.org/releases/2018-12/"/>

    <unit id="org.eclipse.e4.rcp.feature.group"                     version="0.0.0" />
    <unit id="org.eclipse.emf.common.feature.group"                 version="0.0.0" />
    <unit id="org.eclipse.emf.ecore.feature.group"                  version="0.0.0" />
    <unit id="org.eclipse.equinox.executable.feature.group"         version="0.0.0" />
    <unit id="org.eclipse.rcp.feature.group"                        version="0.0.0" />
</location>

它像这样挂在pom.xml中:

        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>target-platform-configuration</artifactId>
            <configuration>
                <resolver>p2</resolver>
                <target>
                    <artifact>
                        <groupId>groupId</groupId>
                        <artifactId>org.acme.plugin.build</artifactId>
                        <version>7.0.0-SNAPSHOT</version>
                        <classifier>platform</classifier>
                    </artifact>
                </target>
                <ignoreTychoRepositories>true</ignoreTychoRepositories>
                <environments>
                    <environment>
                        <os>win32</os>
                        <ws>win32</ws>
                        <arch>x86_64</arch>
                    </environment>
                </environments>
            </configuration>
        </plugin>

问题是什么?我该如何解决?

eclipse-plugin eclipse-rcp tycho p2
1个回答
1
投票

谁曾想到?这与this question again中完全相同的Eclipse bug。出于某种原因,我们的构建过程优先考虑Maven Central中的插件而不是Eclipse存储库中的插件。由于它们已经破坏了Maven依赖关系,并且由于Tycho(显然)仍在评估这些依赖关系,因此会破坏构建。

在我们的例子中,修复就像在我们的目标平台中将Maven Central移动到Eclipse repo下面一样简单。

© www.soinside.com 2019 - 2024. All rights reserved.