You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建非自包含p2仓库:includeAllDependencies配置无效求助

解决Tycho p2仓库includeAllDependencies=false未生效的问题

我之前也踩过一模一样的坑!明明设置了includeAllDependencies=false,结果第三方依赖还是被打包进了自己的p2仓库。结合你的场景(功能未显式依赖非自研插件),大概率是以下几个原因之一,你可以逐一排查:

1. 忽略了resolveDependencies参数

includeAllDependencies=false并不是万能的——如果你的tycho-p2-repository插件还默认开启了resolveDependencies=true,Tycho还是会主动解析所有传递依赖并塞进仓库里。这是最常见的问题!

你需要在仓库模块的pom.xml里同时配置这两个参数:

<plugin>
  <groupId>org.eclipse.tycho</groupId>
  <artifactId>tycho-p2-repository-plugin</artifactId>
  <version>${tycho-version}</version>
  <configuration>
    <includeAllDependencies>false</includeAllDependencies>
    <resolveDependencies>false</resolveDependencies>
  </configuration>
</plugin>

2. Feature模块的includeDependencies配置冲突

如果你的p2仓库依赖了feature模块,而feature模块的tycho-feature-plugin设置了includeDependencies=true,那feature会先把所有依赖打包进去,仓库模块自然会继承这些内容。

检查feature模块的pom.xml,确保这个参数也是false:

<plugin>
  <groupId>org.eclipse.tycho</groupId>
  <artifactId>tycho-feature-plugin</artifactId>
  <version>${tycho-version}</version>
  <configuration>
    <includeDependencies>false</includeDependencies>
  </configuration>
</plugin>

3. 自研插件的MANIFEST.MF依赖导致传递引入

虽然你没在feature里显式加非自研插件,但你的自研插件肯定依赖了Eclipse基础组件(比如org.eclipse.core.runtime)。如果这些依赖在MANIFEST.MF里标记为resolution:=mandatory(默认值),Tycho可能会默认把它们包含进来,除非你明确引导它从外部站点获取。

解决办法是:在仓库模块的配置里添加依赖的官方更新站点URL,让用户安装时自动从外部拉取依赖:

<configuration>
  <!-- 其他已有配置 -->
  <mirrorURLs>
    <mirrorURL>https://download.eclipse.org/releases/latest/</mirrorURL>
  </mirrorURLs>
</configuration>

4. Target Platform的“过度包含”

如果你的target platform文件(比如.target)里直接包含了所有第三方插件,Tycho可能会认为这些是“本地可用”的,从而打包进仓库。建议你的target platform只保留构建所需的最小依赖集,不要把第三方插件标记为需要包含到输出中。

最后验证

构建完成后,你可以打开仓库目录下的content.xml文件,搜索非自研插件的ID(比如org.eclipse.core.runtime)。如果这些ID没有出现在<unit>标签里,说明配置生效了——用户安装你的更新站点时,Eclipse会自动从你指定的镜像URL下载所需依赖。

内容的提问来源于stack exchange,提问作者positron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:19:45