WEB-INF 中具有相同 groupId 和 artifactId 的多个 jar

Multiple jars of same groupId and artifactId in WEB-INF

我正在使用 maven 版本 3.5.3,在构建我的项目时,我在我的 WEB-INF 中获得了两个版本的 apache commons-lang3 (v3.1 和 v3.4) 即使我在 parent 的“dependency-management”中明确指定了 v.3.4 pom.xml.

两者具有相同的groupId和artifactId。

我很困惑。这是 Maven 的预期行为吗?在什么情况下会发生这种情况?我的印象是,如果依赖项具有相同的 groupId 和 artifactId,maven 会将所有依赖项解析为仅一个 jar。

I am confused. Is this expected behavior of maven? Under what circumstances does this happen? I was under the impression that maven resolves all dependencies to only one jar if dependencies have same groupId and artifactId.

Maven 会。
对于相同的 groupId 和相同的 artifactId,Maven 打包目标的默认行为是只打包它们的一个版本。请注意,如果有多个版本可用,则 Maven 选择的版本并不是真正可预测的。

我想在你的构建执行从 jar 到 WEB-INF 文件夹的手动复制(例如通过 Maven 插件),或者你的 pom(或父级)指定一个 overlay in the WAR.

mvn dependency:tree 命令应该可以帮助您了解引用或提取不同版本的位置。

我在没有 "clean" 的情况下完成构建时多次看到这个问题,即使用 package 而不是 clean package。在这种情况下,您可能会混合使用旧版本和最新版本。