我有两个版本的应用程序:swt和rap。因此,在我的插件中,我对它们都有可选的依赖关系,当缺少一个时,另一个存在,反之亦然。问题是,在Tycho我只能要求或忽略可选的依赖项。有办法以某种方式对待这个吗?
答案 0 :(得分:2)
我的建议:不使用可选的依赖项。在我的单一来源的RCP / RAP项目中,我创建了几个空/"假的"插件,只有id无关紧要。
答案 1 :(得分:1)
我找到了解决方案。它有两个独立的rcp和rap配置文件,忽略可选的依赖关系,并为特定配置文件中我需要的每个bundle定义额外的要求,例如:
<profiles>
<profile>
<id>rap</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>maven.profile</name>
<value>rap</value>
</property>
</activation>
<repositories>
...
</repositories>
<modules>
...
</modules>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<dependency-resolution>
<optionalDependencies>ignore</optionalDependencies>
<extraRequirements>
<requirement>
<type>eclipse-plugin</type>
<id>org.eclipse.rap.ui</id>
<versionRange>0.0.0</versionRange>
</requirement>
<requirement>
<type>eclipse-plugin</type>
<id>org.eclipse.rap.ui.views</id>
<versionRange>0.0.0</versionRange>
</requirement>
</extraRequirements>
</dependency-resolution>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
这就是我在顶级pom.xml中所拥有的,如果你的构建中的某些bundle对该构建的其他bundle具有可选的依赖性,那么如果你在顶级pom中添加额外的需求,则会有循环依赖。解决方案只是将额外的需求添加到具有依赖关系的bundle的pom中 - 你只需将它放在一个它应该在的配置文件中