Eclipse产品中p2依赖冲突问题排查与咨询
首先直接给你结论:p2确实会把Eclipse产品本身已安装的feature视为可用的依赖来源,你遇到的安装失败不是因为p2忽略了产品内置的feature,而是依赖ID不匹配+版本约束冲突导致的。
咱们拆解下问题根源:
- 你要安装的
com.iar.cdt.arm.sdk.feature依赖的是org.eclipse.emf.feature.group(无版本限制),但你的MCUXpresso IDE内置的是org.eclipse.emf.common.feature.group(2.19版本)——这两个是完全不同的feature ID,p2不会自动把后者当成前者的替代项。 - 当p2找不到匹配的
org.eclipse.emf.feature.group时,就会去更新站点拉取,而更新站点上的org.eclipse.emf.feature.group 2.20版本,要求依赖的org.eclipse.emf.common.feature.group必须是2.17版本,但你的IDE已经强制固定了2.19版本的EMF Common,这就直接触发了版本冲突。
再结合你给出的异常信息验证下:
无法满足依赖关系:
来源:IAR Toolchain for ARM (8.30.x - 8.50.x) 8.1.0.202007252323(com.iar.cdt.arm.sdk.feature.feature.group 8.1.0.202007252323)
目标:org.eclipse.equinox.p2.iu; org.eclipse.emf.feature.group 0.0.0
这段说明IAR的feature需要org.eclipse.emf.feature.group,但没有指定版本,p2会去更新站点找最新可用的,也就是2.20版本:
无法满足依赖关系:
来源:EMF - Eclipse Modeling Framework Runtime and Tools 2.20.0.v20191028-0905(org.eclipse.emf.feature.group 2.20.0.v20191028-0905)
目标:org.eclipse.equinox.p2.iu; org.eclipse.emf.common.feature.group [2.17.0.v20190920-0401,2.17.0.v20190920-0401]
而你的IDE已经固定了EMF Common的版本:
无法满足依赖关系:
来源:MCUXpresso IDE 11.2.0.202007071544(MCUXpressoIDE 11.2.0.202007071544)
目标:org.eclipse.equinox.p2.iu; org.eclipse.emf.common.feature.group [2.19.0.v20200324-0932,2.19.0.v20200324-0932]
这就导致p2必须同时安装2.17和2.19版本的EMF Common,而这两个是互斥的,最终安装失败。
可能的解决方向
- 优先找IAR工具链针对MCUXpresso IDE 11.2的适配版本,或者更新的IAR feature版本,确保其依赖的EMF feature能兼容2.19版本的EMF Common。
- 如果熟悉p2的命令行工具(p2 director),可以尝试通过
-installIU参数强制指定使用已安装的EMF相关组件,或者添加-profileProperties来调整版本约束,但这种方法有兼容性风险,需要测试。 - 检查MCUXpresso IDE的官方更新站点,看是否有能兼容的EMF feature更新包,不过产品内置的核心feature版本通常是固定的,这个方法可行性较低。
内容的提问来源于stack exchange,提问作者mat101

