如何配置Tycho构建符合官方Eclipse特性展示规则的自定义RCP

自定义RCP实现安装详情页特性双位置展示的Tycho配置方案
这个效果本质是p2安装机制的默认规则:Installation Details的「Features」标签展示所有实际安装到环境中的feature实体,「Installed Software」标签展示所有被标记为**根安装单元(root IU)**的p2分组单元。官方Eclipse里的特性之所以两边都显示,是因为构建时同时注册了feature实体和对应的p2 group根IU,自定义RCP只要按以下规则配置就能实现同样效果:
1. 前置检查:Feature项目配置
- 确保你要双展示的feature项目的
feature.xml中,没有勾选*"Mark as unavailable for install/update"*选项,否则p2不会为这个feature生成可供安装的group IU - 不需要特意勾选"Root feature"选项,这个选项是旧版Eclipse更新站点的遗留配置,对p2根IU标记没有实际作用
2. Tycho构建核心配置
首先确保Tycho版本使用2.7.0及以上稳定版,低版本处理root IU时存在默认隐藏系统组件的bug,无法实现预期效果。
- 第一步:不要只在
.product文件的Features列表里直接引入目标feature,这种引入方式只会把feature作为产品的被动依赖安装,不会标记为根IU,最终只会在Features标签显示 - 第二步:在负责打包产品的模块pom.xml中,给
tycho-p2-director-plugin显式配置根IU列表,把需要双展示的feature对应的p2 group单元加入列表,配置示例如下:
<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-p2-director-plugin</artifactId> <version>${tycho.version}</version> <configuration> <rootIUs> <!-- 替换成你自己的feature对应的group IU,规则是【feature id】 + .feature.group --> <rootIU>com.your.custom.feature.feature.group</rootIU> <!-- 引入的第三方需要双展示的feature也按同样规则加,比如题目里的XML工具就是org.eclipse.wildwebdeveloper.xml.feature.group --> <!-- 必须把自己产品的IU也加入根IU列表 --> <rootIU>com.your.custom.rcp.product</rootIU> </rootIUs> </configuration> </plugin>
- 第三步:检查产品的
config.ini配置,不要添加eclipse.p2.ui.hide.features=true参数,也不要通过p2元数据配置给上述group IU加org.eclipse.equinox.p2.type.root=false属性,否则Installed Software列表会主动隐藏这些单元。
3. 效果验证
构建启动RCP后打开Installation Details:
- 「Installed Software」标签能看到对应特性条目,查看属性可见IU后缀为
.feature.group - 「Features」标签能看到同名、同版本的特性条目
两边都存在即配置生效,和官方Eclipse的展示逻辑完全一致。
常见踩坑
- 写错group IU后缀:必须是
.feature.group,漏写后缀或者写成.feature.jar会导致Tycho解析依赖失败,或者配置不生效 - 强行把所有feature都设为根IU:不需要双展示的内部依赖feature不用加进rootIUs列表,避免Installed Software列表出现太多用户不需要关心的内部依赖
- 启用了精简p2 UI的配置:很多自定义RCP为了屏蔽用户更新功能会加隐藏p2条目的配置,加之前要确认不会过滤掉需要展示的根IU
内容的提问来源于stack exchange,提问作者Jarvis Yu
相关产品推荐
相关产品推荐

