我尝试使用 Maven
和 Tycho
编译一个 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