我尝试使用Eclipse Indigo RCP
和Maven
编译Tycho
个应用程序。如果我只是为一个平台构建它,它工作正常,但如果我尝试构建它更多,则构建停止工作。
问题是我在我想要构建的产品文件中有特定于平台的插件。像org.eclipse.swt.win32.win32.x86
这样的依赖关系,它们是org.eclipse.swt
的片段插件
当我没有向我的产品添加特定于平台的片段时,应用程序将无法启动,因为没有像org.eclipse.swt.win32.win32.x86这样的平台库。
作为Tycho存储库,我们使用托管在我们自己的服务器上的eclipse indigo更新站点的克隆。它包括delta-pack。
当我为所有平台添加所有片段时,构建崩溃并且maven告诉我,例如,平台过滤器与Linux构建不匹配。
有谁知道如何解决这个问题? 我应该将这些平台相关的东西添加到我的产品中吗我更喜欢将特定的依赖项保留在我的产品之外,我是对的吗?
答案 0 :(得分: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"/>
注意,如果您使用产品编辑器,它将删除这些值。
然而,最好使用基于功能的产品。功能编辑器允许编辑这些字段。
答案 1 :(得分: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