我使用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或多或少地手动。
答案 0 :(得分:0)
如果您已在Eclipse中运行,则可以直接在该运行时中执行EMF生成步骤。因此,您需要配置一个与tycho-eclipserun-plugin
执行相同步骤的构建器。
一般情况下,对于某些构建步骤需要在Eclipse中执行但是以与Maven不同的方式执行的情况,m2e具有配置器的概念:配置器可以告诉m2e遇到某个构建时该怎么做插入。因此,在tycho-eclipserun-plugin
的情况下,配置程序可以让目标在分叉进程中运行而不是在进程中运行。但是,我并不知道这样的m2e配置器,并且仍然需要决定将流程分叉为增量Eclipse构建的一部分是否真的是个好主意。