Tycho 构建具有对 SWT 和 RAP 的可选依赖项

Tycho build with optional dependencies to SWT and RAP

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

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

RAP 构建

  • 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.表格

好吧,我已经找到了解决办法。它有两个单独的 rcp 和 rap 配置文件,忽略可选依赖项并为我在该特定配置文件中需要的每个包定义额外要求,例如:

<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,如果您的构建中的某些捆绑包对该构建中的其他捆绑包有可选的依赖性,那么如果您在顶级 pom。解决方案是简单地向具有依赖性的包的 pom 添加额外的要求 - 你只需要将它放在一个配置文件中,它应该在