6

我尝试使用and编译Eclipse Indigo RCP应用程序。如果我只是为一个平台构建它,它工作得很好,但如果我尝试构建它更多的构建停止工作。MavenTycho

问题是我要构建的产品文件中有特定于平台的插件。依赖org.eclipse.swt.win32.win32.x86项是org.eclipse.swt.
当我没有向我的产品添加特定于平台的片段时,应用程序将无法启动,因为没有像 org.eclipse.swt.win32.win32.x86 这样的平台库。作为 Tycho 存储库,我们使用托管在我们自己的服务器上的 eclipse indigo 更新站点的克隆。它包括增量包。当我为所有平台添加所有片段时,构建崩溃了,maven 告诉我平台过滤器与 Linux 构建不匹配。

有谁知道如何解决这一问题?
我应该将这些平台相关的东西添加到我的产品中吗?我更喜欢将特定的依赖项排除在我的产品之外,对吗?

4

2 回答 2

7

听起来您有一个基于插件的产品。在这种情况下,您需要手动编辑 .product 文件并为这些插件添加平台过滤器。不幸的是,eclipse 中的内置产品编辑器没有公开这些值。请参阅http://wiki.eclipse.org/Tycho/FAQ#How_to_build_plugin-based_products_with_platform-specific_fragments.3F

对于每个插件,例如 org.eclipse.swt.win32.win32.x86,您需要添加类似的内容;

<plugin id="org.eclipse.swt.win32.win32.x86" fragment="true" ws="win32" os="win32" arch="x86"/>

请注意,如果您使用产品编辑器,它将删除这些值。

然而,最好使用基于功能的产品。特征编辑器允许编辑这些字段。

于 2012-11-21T15:53:29.580 回答
1

我在博客中找到了一个更简单的解决方案:http: //blog.sdruskat.net/building-a-cross-platform-feature-based-eclipse-rcp-product-with-tycho-the-umpteenth/

在 parent/master pom.xml 中,要使用 p2 中的所有插件,请指定以下内容:

<build>
 <plugins>
  <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-maven-plugin</artifactId>
    <version>${tycho-version}</version>
    <extensions>true</extensions>
  </plugin>

  <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>target-platform-configuration</artifactId>
    <version>${tycho-version}</version>
    <configuration>
       <resolver>p2</resolver>
        <environments>
          <environment>
            <os>linux</os>
            <ws>gtk</ws>
            <arch>x86_64</arch>
          </environment>
          <environment>
            <os>win32</os>
            <ws>win32</ws>
            <arch>x86_64</arch>
          </environment>
        </environments>
    </configuration>
  </plugin>
 </plugins>
</build>

我的第谷版本是 0.21.0

于 2014-11-15T19:03:51.947 回答