我目前的任务是从Eclipse 3.7和4.5切换我们的一个应用程序。可悲的是,没有人预料到新框架是如何被搞砸的,这就是为什么其他应用程序现在将保持在3.7。现在是棘手的部分:为了加快错误查找过程,我想测试我们对4.5的常见插件(但是他们仍然需要针对3.7进行测试)。
This thread建议可以使用帮助maven-invoker-plugin
,但是它的2岁,这是一个非常常见的用例,所以现在可能会有更好的东西。
我无法找到关于如何使maven-invoker-plugin
与Tycho合作的任何内容。并且tycho-surefire-plugin
似乎没有任何选项可以更改目标平台。
以防万一,我正在谈论这个目标平台(在文档之外似乎不支持/使用):
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<configuration>
<resolver>p2</resolver>
<target>
<artifact>
<groupId>${project.groupId}</groupId>
<artifactId>org.acme.project</artifactId>
<version>${project.version}</version>
<classifier>platform</classifier>
</artifact>
</target>
</configuration>
</plugin>
那么如何针对多个目标平台测试我的集成测试?
答案 0 :(得分:0)
您是否需要在单次构建期间执行此操作,即在单个反应器中?如果没有,您可以根据传递给Maven的系统属性简单地切换目标平台,例如,通过Jenkins/Hudson matrix build:
<target>
<artifact>
<groupId>${project.groupId}</groupId>
<artifactId>${targetPlatform}</artifactId>
<version>${project.version}</version>
<classifier>platform</classifier>
</artifact>
</target>
请记住为targetPlatform
下的project/properties
媒体资源配置默认值,因此未设置-DtargetPlatform=...
的版本不会失败。
(在Eclipse Code Recommenders中,我们定期使用此设置test against 6 different Eclipse releases。)
答案 1 :(得分:0)
我还找到了在同一个反应堆中运行测试的方法。
我创建了一个没有所有测试类的测试片段的副本,并通过target-platform-configuration
添加了E4目标平台。然后我使用此代码将类和 fragment.xml 复制到新模块:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>copy-classes</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/it-classes</outputDirectory>
<resources>
<resource>
<directory>../${original-test-project}/src</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-fragment</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/</outputDirectory>
<resources>
<resource>
<directory>../${original-test-project}/</directory>
<includes>
<include>fragment.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
最后, build.properties 必须有行source.. = target/it-classes/
,以便Maven构建可以编译复制的类并正常运行它们。