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

obe*_*ies 7 p2 dependency-management tycho

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

我将Eclipse RCP构建从[ 以前的技术,例如eclipse-application/ PDE无头构建/ ...]迁移到使用包装类型使用Tycho构建产品的新推荐方法eclipse-repository.现在我的发行版包含比以前更多的包.

问题似乎是Tycho引入了我的产品中包含的bundle的可选依赖项.我怎么能阻止这个?

obe*_*ies 10

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

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

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

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