同一反应堆中的依赖关系

Dependencies In Same Reactor

我有一个非常简单的 Tycho 反应器,它有两个模块:一个是标准的 Maven 项目,添加了这个使其成为一个包:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <extensions>true</extensions>
    <executions>
        <execution>
            <id>default-bundle</id>
            <phase>package</phase>
            <goals>
                <goal>bundle</goal>
            </goals>
            <configuration>
                <instructions>
                    <Export-Package>org.acme.jar</Export-Package>
                </instructions>
                <manifestLocation>META-INF</manifestLocation>
            </configuration>
        </execution>
    </executions>
</plugin>

第二个是 Tycho 项目,它依赖于 MANIFEST.MF.

中的上述 JAR

如果我开始构建,我会遇到以下异常:

[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: plugin 0.0.1.qualifier
[ERROR]   Missing requirement: plugin 0.0.1.qualifier requires 'bundle org.acme.jar 0.0.1' but it could not be found

这真的很奇怪,因为包 在同一个反应器中。

但不用担心,我也可以添加 Maven 依赖项:

<!-- parent pom.xml -->
<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>target-platform-configuration</artifactId>
    <version>0.26.0</version>
    <configuration>
        <pomDependencies>consider</pomDependencies>
    </configuration>
</plugin> 

<!-- plug-in pom.xml -->
<dependencies>
    <dependency>
        <groupId>org.acme</groupId>
        <artifactId>jar</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

我仍然得到相同的异常,这很奇怪,因为 documentation 声明:Maven 根据正常的 Maven 规则解析 GAV 依赖项。

事实并非如此。显然 org.acme.jar 没有得到解决。或者第谷可能没有看到它是一个捆绑包。

JAR 模块是一个用于服务器端组件的 API 项目,我们希望在较长的 运行 中删除 SWT / Tycho,因此不能选择 org.acme.jar Eclipse 插件。

如何在第谷的同一个反应器中定义依赖关系?

恐怕您所要求的目前无法实现。第谷维基文档 this limitation in the dependency on pom-first artifacts HOW-TO.

话虽如此,如果您真的希望整个构建(maven-bundle-plugin 和 Tycho 部分)通过单个 mvn clean install 达到 运行,则使用 maven-invoker-plugin at the end of the “plain Maven” build to fork a “Tycho build” should work. It’s a rather cumbersome workaround, however (example on Github) .