我使用Tycho来构建和测试一些eclipse插件。我有一个包含许多平台特定片段的包。我还有一个测试包,它使用tycho-surefire-plugin来测试具有平台特定片段的原始包。但是,Tycho没有将当前平台的片段包含在测试运行时中。
所有特定于平台的片段看起来都像下面列出的win64片段清单。 (实际上总共有六个片段,我需要支持每个平台组合一个。)
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Liferay AUI Upgrade Tool Win64
Bundle-SymbolicName: com.liferay.laut.win32.win32.x86_64;singleton:=true
Bundle-Version: 1.0.2.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Fragment-Host: com.liferay.ide.alloy.core
Eclipse-BundleShape: dir
Eclipse-PlatformFilter: (& (osgi.ws=win32)(osgi.os=win32)(osgi.arch=x86_64))
Bundle-Vendor: Liferay, Inc.
示例win64片段pom.xml&#39; <build>
部分
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<configuration>
<environments>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
</environments>
</configuration>
</plugin>
</plugins>
</build>
当我尝试执行我的Tycho构建并运行surefire测试插件时(无论我尝试哪种操作系统),都没有将正确的平台片段添加到运行时。
我在stackoverflow上看到various posts关于类似的问题,但在这些情况下,加载到测试运行时的片段不是具有OS过滤器的特定于平台的片段。
答案 0 :(得分:9)
这是一个很好的问题 - 但是如果你知道正确的技巧,那么解决方案很幸运并不复杂:只需配置Tycho以将包含所有片段的功能包含在测试运行时中。
在eclipse-feature
模块中创建一个包含所有内容的功能
原生片段。确保平台过滤每个平台
插件是正确的:在feature.xml编辑器的 Plug-Ins 选项卡上,
你需要选择每个片段适用的正确的os / ws / arch
至。这是一些手动操作,但通常可以重复使用它
功能将您的片段包含在p2存储库/更新站点中。
使用以下POM配置将此功能包含在测试运行时中:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<dependency-resolution>
<extraRequirements>
<requirement>
<type>eclipse-feature</type>
<id>fragment-containing-feature</id>
<versionRange>0.0.0</versionRange>
</requirement>
</extraRequirements>
</dependency-resolution>
</configuration>
</plugin>
潜在的缺陷是<environments>
模块的eclipse-feature
配置:您不需要该模块的任何特殊内容;让模块继承父POM的<environments>
配置。请注意,父POM应配置您的构建支持的所有环境 - 并且只有片段模块需要覆盖全局配置。