Tycho构建与SWT和RAP的可选依赖项

时间:2015-11-02 08:36:25

标签: eclipse maven swt tycho eclipse-rap

我有两个版本的应用程序:swt和rap。因此,在我的插件中,我对它们都有可选的依赖关系,当缺少一个时,另一个存在,反之亦然。问题是,在Tycho我只能要求或忽略可选的依赖项。有办法以某种方式对待这个吗?

2 个答案:

答案 0 :(得分:2)

我的建议:不使用可选的依赖项。在我的单一来源的RCP / RAP项目中,我创建了几个空/"假的"插件,只有id无关紧要。

RAP build

  • org.eclipse.jface.databinding
  • org.eclipse.ui
  • org.eclipse.ui.forms

RCP构建

  • org.eclipse.rap.jface.databinding
  • org.eclipse.rap.ui
  • org.eclipse.rap.ui.form

答案 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中 - 你只需将它放在一个它应该在的配置文件中