我有一个非常简单的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的同一个反应堆中定义依赖关系?
答案 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)。