我已经使用 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/