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

时间:2018-07-06 07:49:43

标签: java maven dependencies dependency-management

我正在使用Maven版本3.5.3,并且在构建项目时,我在WEB-INF中获得了两个版本的 apache commons-lang3 v3.1和v3.4 ),即使我在父pom.xml的“ 依赖关系管理”中明确指定了v.3.4。

两者都具有相同的groupId和artifactId。

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

2 个答案:

答案 0 :(得分:1)

  

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

Maven会这么做。
对于相同的groupId和相同的artifactId,Maven软件包目标的默认行为是仅打包它们的一个版本。请注意,如果有多个版本可用,则Maven选择的版本实际上是不可预测的。

我想像一下,您的构建会执行一次将jar从jar手动复制到WEB-INF文件夹的操作(例如,通过Maven插件),或者您的pom(或其父级)指定了overlay in the WAR

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

答案 1 :(得分:1)

在没有“干净”的情况下完成构建时,即使用.btn.disabled:hover { box-shadow: none; } 而不是package时,我多次看到此问题。在这种情况下,您可能会混合使用旧版本和最新版本。