使用 Maven Tycho 构建跨平台的 Eclipse



我尝试使用 MavenTycho 编译一个 Eclipse Indigo RCP 应用程序。如果我只为一个平台构建它,它可以正常工作,但如果我尝试为更多平台构建它,构建就会停止工作。

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

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

听起来你有一个基于插件的产品。在这种情况下,您需要手动编辑 .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"/>

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

但是,最好使用基于功能的产品。要素编辑器允许编辑这些字段。

我在

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

在父/主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

最新更新