我需要针对两个目标平台测试我的代码(这可能是错误的,但我想继续关注这个问题):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组合。
但它仍然失败了一个或另一个。我做错了什么?
答案 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
或构建中的配置文件,也被添加到执行中,这是我现在没有的。删除它们立即解决了问题。