由Tycho构建的更新站点在重新构建后仍然包含错误的依赖性

时间:2012-09-21 09:05:19

标签: maven xtext tycho

我已经使用Tycho构建了一个Eclipse更新站点,但是当尝试将其中的某个功能安装到目标IDE时失败。

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

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

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

感谢您的任何指示。

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

2 个答案:

答案 0 :(得分: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重新加载存储库,请转到首选项>安装/更新>可用的软件站点,选择一个存储库并点击 Reload 。如果重新启动Eclipse,也会重新加载存储库。

答案 1 :(得分:0)

也许我已经迟到了,但我仍想分享我的经验。

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

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

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

删除该文件夹中的旧捆绑包并重新重建项目以解决我的问题。