由Tycho构建的Eclipse RCP包含不需要的可选依赖项

时间:2012-09-11 14:40:20

标签: dependency-management p2 tycho

这是Tycho社区经常提出的一个问题:

  

我从[以前的技术迁移了我的Eclipse RCP构建,例如eclipse-application / PDE无头构建/ ...]使用打包类型eclipse-repository添加到新recommended way of building products with Tycho。现在我的发行版包含了比以前更多的包。

     

问题似乎是Tycho引入了我的产品中包含的bundle的可选依赖项。我该如何防止这种情况?

2 个答案:

答案 0 :(得分:10)

Tycho的eclipse-repository打包类型builds product distributions具有相同的技术(称为 p2 ),例如,在Eclipse IDE中安装新功能时也会使用。这样做的好处是,与其他构建技术不同,您不需要手动指定产品中所需捆绑包的所有依赖关系,但Tycho / p2会自动为您包含它们。 (这很重要,否则捆绑包不会在运行时启动。)

另一方面,这也可能是一个缺点:Tycho / p2还包含您希望从产品中排除的某些可选依赖项。

没有选项可以告诉Tycho不包含任何可选的依赖项(因为p2没有此选项)。但是,您可以识别您不需要的可选包,并使用以下配置明确地将它们从target platform中排除:

<plugin>
   <groupId>org.eclipse.tycho</groupId>
   <artifactId>target-platform-configuration</artifactId>
   <version>${tycho-version}</version>
   <configuration>
      <filters>
         <filter>
            <type>eclipse-plugin</type>
            <id>unwanted.bundle.id</id>
            <removeAll />
         </filter>
      </filters>
   </configuration>
</plugin>

然后,产品构建将无法再看到已排除的捆绑包,并将从安装中省略它。

注意:如果在添加上述配置后出现依赖项解析错误,则会有一些非选择性需要捆绑包的内容。虽然阅读起来有点棘手,但错误消息会告诉您从正在构建的内容到删除的bundle所引起的依赖链。

答案 1 :(得分:0)

我偶然发现了这个答案,从我的 RCP 构建中排除了 com.ibm.icu,并想发布更新。

Tycho 可以配置为暂时忽略可选依赖项,请参阅 https://wiki.eclipse.org/Tycho/Release_Notes/0.14

<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tychoVersion}</version>
<configuration>
  <dependency-resolution>
    <optionalDependencies>ignore</optionalDependencies>
  </dependency-resolution>
</configuration>