maven - Tycho 构建的更新站点在重新构建后仍然包含错误的依赖项

标签 maven xtext tycho

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

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

我从 list 中删除了依赖项并再次运行 mvn clean install。构建报告成功,但是当我尝试使用新建的更新站点时,它仍然提示对 org.eclipselabs.xtext.utils.unittesting (a) exists and (b) can't 的依赖满意。

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

感谢您的指点。

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

最佳答案

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

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

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

  • 本地 Maven 存储库:为了支持构建 react 堆的各个部分,Tycho 将使用 mvn clean install 在本地构建的 Artifact 添加到目标平台。如果您不知道此功能,可能会产生各种奇怪的效果。

    为避免这种情况,除非万不得已,否则不要使用 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 重新加载存储库,请转到首选项>安装/更新>可用软件站点,选择一个存储库并点击重新加载。如果您重新启动 Eclipse,存储库也将重新加载。

关于maven - Tycho 构建的更新站点在重新构建后仍然包含错误的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12527440/

相关文章:

maven - JRebel 可以在 maven 上的 kotlin-maven-plugin 插件使用时重新加载 Kotlin 类吗?

java - 如何在 Java 中使用 Ruby 和 Maven?

java - 如何使用maven程序集插件配置jar文件的 list 文件?

java - 匹配 XText 中的字符串,无论大小写

java - 如何解决maven多模块依赖问题?安装后不是从本地 m2 导入

java - Xtext validator 创建错误

Xtext 独立和验证

rcp - 构建 RCP 应用程序时在第谷中进行 p2.inf 过滤

maven - 如何使用本地目录作为第谷构建的目标平台?

java - Maven:如何添加修补的依赖项