7

这是第谷社区经常被问到的一个问题:

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

问题似乎是第谷引入了我的产品中包含的捆绑包的可选依赖项。我怎样才能防止这种情况?

4

2 回答 2

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>

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

注意:如果在添加上述配置后出现依赖解析错误,则说明某些东西非可选地需要捆绑包。尽管阅读起来有点棘手,但错误消息会告诉您从您正在构建的东西到已删除的包的依赖链。

于 2012-09-11T14:40:20.160 回答
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>
于 2021-04-12T12:43:31.173 回答