相同反应堆中的依赖关系

时间:2017-02-03 14:01:58

标签: tycho

我有一个非常简单的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没有得到解决。或许Tycho没有看到它是一捆。

JAR模块是用于服务器端组件的API项目,我们希望从长远来看放弃SWT / Tycho,因此不能让org.acme.jar成为Eclipse插件

如何在Tycho的同一个反应堆中定义依赖关系?

1 个答案:

答案 0 :(得分:1)

我担心你要求的东西目前是不可能的。 Tycho Wiki在this limitation中记录dependency on pom-first artifacts HOW-TO

话虽如此,如果您真的希望整个构建(maven-bundle-plugin和Tycho部分)与单个mvn clean install一起运行,那么在“平原”末尾使用maven-invoker-plugin Maven“构建分叉”Tycho构建“应该工作。然而,这是一个相当麻烦的解决方法(example on Github)。