使用Tycho针对两个Eclipse版本测试我的代码

时间:2014-12-17 19:21:14

标签: eclipse maven tycho

我需要针对两个目标平台测试我的代码(这可能是错误的,但我想继续关注这个问题):Kepler和Luna。

为此,我在父项目中定义了两个存储库:

<repositories>
    <repository>
        <id>kepler</id>
        <layout>p2</layout>
        <url>http://download.eclipse.org/releases/kepler</url>
    </repository>
    <repository>
        <id>luna</id>
        <layout>p2</layout>
        <url>http://download.eclipse.org/releases/luna</url>
    </repository>
</repositories>

然后我创建了两个插件,一个用于Kepler,一个用于Luna,它声明了两个不同的依赖项(代码重复,但这又是一个单独的问题):

 // Luna
 Require-Bundle:
 org.eclipse.e4.core.contexts;bundle-version="1.3.100"

 // Kepler
 Require-Bundle:
 org.eclipse.e4.core.contexts;bundle-version="[1.3.0,1.3.100)"

现在,当我指定适当的tycho.target-platform,通过-D或settings.xml,并使用mvn clean install运行构建时,其中一个插件总是失败而另一个插件成功。如果我没有指定Luna目标,Luna会失败,如果我没有指定Kepler目标,Kepler会失败。

我告诉自己,必须有一个更好的方法,我读到了target-platform-configuration我已经配置了所有可能的os / ws / arch组合。 但它仍然失败了一个或另一个。我做错了什么?

2 个答案:

答案 0 :(得分:1)

问题是您使用已弃用的-Dtycho.target-platform属性覆盖POM中的目标平台配置。设置该属性后,Tycho不再使用您指定的两个p2存储库中的工件。

因此,不要使用此属性(并确保不将其设置为settings.xml),并且您的方法应该有效。

答案 1 :(得分:0)

检查了我的〜/ .m2 / settings.xml后,我的答案就出现了:

<profile>
  <id>tycho-kepler</id>
  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
  <properties>
    <tycho.targetPlatform>/usr/local/share/eclipse</tycho.targetPlatform>
  </properties>
</profile>
<profile>
  <id>tycho-luna</id>
  <activation>
    <activeByDefault>false</activeByDefault>
  </activation>
  <properties>
    <tycho.targetPlatform>/usr/local/share/eclipse-luna</tycho.targetPlatform>
  </properties>
</profile>

显然,这些行,即使没有指定-P或构建中的配置文件,也被添加到执行中,这是我现在没有的。删除它们立即解决了问题。