2

我已经用 Tycho 构建了一个 Eclipse 更新站点,但是当尝试从它安装一个特性到目标 IDE 时失败了。

更新站点构建良好;我可以从目标 Eclipse 安装中看到它并选择要安装的特性。但是,依赖项检查在安装开始时失败,因为它找不到声明的依赖项(org.eclipselabs.xtext.utils.unittesting)。这不应该是一个依赖项:它被错误地包含在我的一个 Eclipse 插件项目的 MANIFEST.MF 中。

我从清单中删除了依赖项并mvn clean install再次运行。构建报告成功,但是当我尝试使用新构建的更新站点时,它仍然抱怨对org.eclipselabs.xtext.utils.unittesting(a) 的依赖存在并且 (b) 无法满足。

所以问题是:我还需要做什么才能从生成的更新站点中删除依赖项?

感谢您的任何指示。

PS:我知道我可以在目标 eclipse 安装中添加 oexuunittesting 的站点,这样它就可以满足依赖关系。但是我不想那样做;该功能不需要它来工作,我不希望其他用户必须添加不必要的依赖项。

4

2 回答 2

6

以下是您的方案中可能涉及的缓存位置列表,以及如何清除它们

  • 目标文件夹:如果目标文件夹包含以前构建的结果,Maven 构建可能会使用此数据来加速构建。Tycho 没有使用此功能,并且 AFAIK 它不应该从目标文件夹中获取任何现有内容。

    可以肯定的是,请始终在通话中包含clean目标。mvn

  • 本地 Maven 存储库:为了支持反应器部件的构建,Tycho 将已在本地构建的工件添加mvn clean install到目标平台。如果您不了解此功能,可能会产生各种奇怪的效果。

    install为避免这种情况,除非必须,否则不要构建。改为使用mvn clean verify。另外:删除文件~/.m2/repository/.meta/p2-local-metadata.properties会重置 Tycho 认为是“本地安装”的内容。

    从 Tycho 0.16.0 开始,您还可以通过命令行开关为一个构建禁用此行为,-Dtycho.localArtifacts=ignore或者通过在 settings.xml 中设置相同的属性为所有构建禁用此行为。

  • p2:Eclipse 中的 p2 更新管理器缓存自 Eclipse 启动以来它使用的 p2 存储库。

    要强制 p2 重新加载存储库,请转到Preferences > Install/Update > Available Software Sites,选择一个存储库并点击Reload。如果您重新启动 Eclipse,也将重新加载存储库。

于 2012-09-21T12:28:03.537 回答
0

也许我来晚了,但我仍然想分享我的经验。

我正在使用p2-maven-plugin将普通的 jar 文件转换为 osgi 包。它将转换后的 jar 缓存在

~/.m2/repository/p2/osgi/bundle

除非我更改 jar 的版本,否则 p2 插件总是从该位置加载旧包。

删除该文件夹中的旧包并重新构建项目再次解决我的问题。

于 2016-08-15T09:33:25.213 回答