【问题标题】:Update site built by Tycho still contains erroneous dependency after re-buildTycho 构建的更新站点在重新构建后仍然包含错误的依赖关系
【发布时间】:2012-09-21 09:05:18
【问题描述】:

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

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

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

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

感谢您的任何指点。

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

【问题讨论】:

  • 编辑: 被关闭。只需从清单中删除依赖项即可。问题显然是在主机站点和/或 Eclipse 中缓存功能描述。
  • p2 director 插件与这个问题无关,是吗?当你尝试从 Eclipse 安装时,会出现“无法满足依赖关系”的问题,对吧?
  • 感谢@oberlies,问题已更新。

标签: maven xtext tycho


【解决方案1】:

这里列出了您的场景中可能涉及的缓存位置,以及如何清除它们

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

    可以肯定的是,始终在您的mvn 调用中包含clean 目标。

  • 本地 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,也会重新加载存储库。

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 2016-04-08
      • 1970-01-01
      相关资源
      最近更新 更多