使用反应器工件在第谷内部运行Eclipse



是否有一种方法可以使tycho-eclipserun-plugin:eclipse-run目标解析当前反应器或本地存储库中的工件的依赖关系?我试图在我们的Tycho构建中运行Eclipse/CDT无头构建应用程序作为一个步骤,但是我不知道如何用新构建的工具链插件填充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实例中。当然,我可以指出一个托管插件的外部更新站点,但我希望能够使用已经在同一反应堆中构建的插件。这可能吗?

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

不,这是不可能的

早期版本的Tycho允许在eclipserun-plugin中使用反应器中的构件,但是这会导致一些项目的问题,这些项目是从eclipserun-plugin中使用的构件(即Eclipse平台)构建上游构件的。因此,为了解决这个问题,eclipserun-plugin使用的工件与反应器解耦。Tycho 0.17.0.

可以想象重新允许这个用例的方法,但目前还没有实现。据我所知,目前还没有具体的想法来做到这一点。如果你想贡献一个,你可以在Tycho的问题跟踪器中提交一个增强。

我能找到的最简单的方法是使用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,它包含了你需要的存储库。

编辑:这原来不是我所期望的工作。它将从本地存储库中提取工件,而不是像我期望的那样从反应器中提取工件。

最新更新