使用reactor工件在Tycho中运行Eclipse

时间:2014-06-09 09:58:04

标签: eclipse maven tycho

有没有办法让tycho-eclipserun-plugin:eclipse-run目标解决当前reactor 或本地存储库中工件的依赖关系。我尝试将Eclipse / CDT无头构建应用程序作为Tycho构建中的一个步骤运行,但我无法弄清楚如何使用新构建的工具链插件填充Eclipse实例。

<plugin>
    <groupId>org.eclipse.tycho.extras</groupId>              
    <artifactId>tycho-eclipserun-plugin</artifactId>
    <executions>
    <execution>
        <configuration>
        <appArgLine>-application org.eclipse.cdt.managedbuilder.core.headlessbuild -import file:///...  -cleanBuild all</appArgLine>
                <repositories>
                    <repository>
                        <url>http://download.eclipse.org/releases/kepler/</url>
                        <layout>p2</layout>
                    </repository>
                </repositories>
                <dependencies>
                    ...
                    <dependency> 
                        <artifactId>my.toolchain.feature</artifactId>
                        <type>eclipse-feature</type>
                    </dependency>
        </dependencies>
            </configuration>
            <goals>
                <goal>eclipse-run</goal>
            </goals>
            <phase>test</phase>
        </execution>
    </executions>
 </plugin>

这将失败,因为我的工具链插件不存在于承载无头构建应用程序的Eclipse实例中。当然,我可以指出一个托管插件的外部更新站点,但我希望能够使用已经在同一个反应器中构建的插件。这可能吗?

编辑:原始问题包括&#34;或本地存储库工件&#34;,但这不是我的实际意思。

2 个答案:

答案 0 :(得分:1)

不,这是不可能的。

早期版本的Tycho允许使用反应堆中的工件来获取eclipserun-plugin,但这个caused problems for projects which build upstream artifacts from the artifacts they used for the eclipserun-plugin,即Eclipse平台。因此,为了解决这个问题,eclipserun-plugin使用的工件与反应器和放大器分离。 Tycho 0.17.0中的反应堆依赖。

可以想象重新允许此用例的方法,但目前尚未实现。 AFAIK还没有具体的想法,但如何做到这一点。如果你想贡献一个,你可以file an enhancement in Tycho's issue tracker

答案 1 :(得分:0)

我能找到的最简单的方法是使用maven-dependency-plugin从存储库模块中复制存储库:

<plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.8</version>
    <executions>
        <execution>
            <goals>
                <goal>unpack</goal>
            </goals>
            <phase>integration-test</phase>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>com.iar</groupId>
                        <artifactId>my.toolchain.repository</artifactId>
                        <version>0.0.1-SNAPSHOT</version>
                        <type>zip</type>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>

这将在本地复制和解压缩存储库。然后可以在调用eclipserun目标时将其指定为存储库:

<repository>
    <url>file://${project.build.directory}/dependency</url>
    <layout>p2</layout>
</repository>

您唯一需要知道的是“eclipse-repository”模块的GAV,它包含您需要的存储库。

编辑:事实证明这不符合我的预期。它将从本地存储库中提取工件,而不是像我预期的那样从反应堆中提取工件。