gpt4 book ai didi

java - 如何让 Maven 忽略本地存储库版本的本地项目

转载 作者:行者123 更新时间:2023-12-02 00:09:00 26 4
gpt4 key购买 nike

我有一个多模块 Maven 项目,我们在其中遮蔽 Google 的 Guava 将包重新定位到我们的包树中,这样我们就不必担心版本冲突。我知道这是一种相当常见的做法。

构建 jar 的工作正常,就像构建系统一样。但是,当在 Maven 中执行 site:site 目标时,它会调用compiler:testCompile,此时无法找到重定位的类。让我指出,早期的 testCompile 工作得很好。

我怀疑这是因为 maven 着色项目是失败项目的对等项目,并且在第二次 testCompile 执行期间它找到了着色项目,查找并发现没有可编译的类,因此终止了。目标目录中有一个正确命名的阴影 jar,它确实包含正在查找的类。

我想我想知道的是:是否有一种机制可以告诉maven在子模块中查找jar(源在那里不存在)并跳过已编译的类?我想作为最后的手段,我可​​以将刚刚构建的 jar 的内容提取到 target/classes 目录中,以便可以找到它们。

如有任何帮助,我们将不胜感激。

最佳答案

我们过去也遇到过同样的问题。最终为着色 Artifact 和其他模块提供了单独的发布周期,同时将它们保存在同一个存储库中:

/pom.xml - root for all child modules, except the shaded one
/shaded/pom.xml - no ref to parent (no <parent> section), own release cycle
/module1/pom.xml - explicit ref to released version of shaded artefact
...
/moduleN/pom.xml

在 IDE 中,这些文件 /pom.xml/shaded/pom.xml 作为单独项目导入。

这在以后变得更加有用,因为重建着色模块实际上一年只发生几次。

关于java - 如何让 Maven 忽略本地存储库版本的本地项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58136332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com