m2e无法运行Eclipse的嵌套实例

时间:2014-10-29 11:54:08

标签: eclipse maven tycho

我使用Tycho eclipserun插件在构建期间为EMF模型生成Java源代码(而不是检入源)。配置插件作为maven构建的一部分运行工作正常,但我还想配置m2e,以便在从Eclipse内部构建时执行相同的目标。所以,我想象只需在生命周期映射元数据中指定<execute/>而不是<ignore/>就可以了,如下所示:

<pluginExecution>
    <pluginExecutionFilter>
        <groupId>org.eclipse.tycho.extras</groupId>
        <artifactId>tycho-eclipserun-plugin</artifactId>
        <versionRange>[0.21.0,)</versionRange>
        <goals>
            <goal>eclipse-run</goal>
        </goals>
    </pluginExecutionFilter>
    <action>
        <execute />
    </action>
</pluginExecution>

然后m2e抱怨说

  

目标的执行默认值   org.eclipse.tycho.extras:第谷 - eclipserun-插件:0.21.0:eclipserun   失败:java.lang.IllegalStateException:无法运行多个Equinox   一个构建中的实例。考虑配置Tycho构建   扩展,以便所有使用Tycho功能的mojos共享相同   Equinox运行时。   (org.eclipse.tycho.extras:第谷-eclipserun-插件:0.21.0:eclipserun:默认:产生来源)

好的,所以m2e不能在同一个版本中运行嵌套的Equinox实例,这是有道理的。

有解决方案吗?我能想象的一个解决方案是执行一个独立的Eclipse,但我真的很喜欢eclipserun插件允许这样做的方式,只需指定一个远程p2 repo和一系列要包含的功能,而不是必须单独设置Eclipse或多或少地手动。

1 个答案:

答案 0 :(得分:0)

如果您已在Eclipse中运行,则可以直接在该运行时中执行EMF生成步骤。因此,您需要配置一个与tycho-eclipserun-plugin执行相同步骤的构建器。

一般情况下,对于某些构建步骤需要在Eclipse中执行但是以与Maven不同的方式执行的情况,m2e具有配置器的概念:配置器可以告诉m2e遇到某个构建时该怎么做插入。因此,在tycho-eclipserun-plugin的情况下,配置程序可以让目标在分叉进程中运行而不是在进程中运行。但是,我并不知道这样的m2e配置器,并且仍然需要决定将流程分叉为增量Eclipse构建的一部分是否真的是个好主意。