2012-11-21 89 views
6

我尝试使用MavenTycho编译Eclipse Indigo RCP应用程序。如果我只是为一个平台构建它,但如果我尝试构建它以便构建停止工作,则它工作正常。使用Maven Tycho构建Eclipse跨平台

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

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

+0

这个问题已经过时了。所述问题仅出现在Tycho 0.15.0及更早的版本中。 – oberlies

回答

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"/> 

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

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

+0

+1正是我在找的 – msteiger

+0

似乎并不需要在第谷0.16.0(也许已经0.15.0) – msteiger

+1

@msteiger:这是正确的。 [自Tycho 0.16.0](https://bugs.eclipse.org/bugs/show_bug.cgi?id=342890),您不再需要手动设置产品文件中的ws/os/arch属性 - 第谷build会自动为你设置它们。 – oberlies

1

有一个简单的解决方案,我在博客中发现: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> 

我的tycho版本是0.21.0