我们的warfile不包含jarfile的预期SNAPSHOT-Version,而是通过其他依赖项包含了较旧的发行版。
简化的依赖关系:树
war-x.x.x-SNAPSHOT
\- jar1-x.x.x-SNAPSHOT
+- jar2-x.x.x
| +- problemjar-x.x.x
+- jar3-x.x.x-SNAPSHOT
jar3-xxx-SNAPSHOT具有依赖项“ problemjar-xxy-SNAPSHOT”(较新版本),但是战争项目的构建文件(和依赖项:tree)包含“ jar2-xxx”中的“ problemjar-xxx”。 >
就目前而言,我们将“ jar2-x.x.x”“排除”为“ problemjar-x.x.x”。
但是很高兴知道这种行为的原因,恕我直言,排除只是一种解决方法。
注释:
编辑:项目结构
war和jar1是一个父pom的子代,简化的依赖项:tree来自war项目,该项目将jar1项目作为依赖项。其他的都是正常/外部依赖关系,从war项目中可以看出,这也适用于jar1。
答案 0 :(得分:3)
Maven不会不从依赖关系树中获取最新版本。
它采用的是最接近的版本,对于您而言,这是它遇到的第一个版本。
如果要强制Maven使用特定版本,最好使用<dependencyManagement>
而不是排除项。
答案 1 :(得分:0)
确保满足以下条件:
1)每个子模块都应从其父级获取其版本,即,没有<version>
标签,而只有包含版本的<parent>
标签。
2)在同一项目中调用依赖项时,请始终执行以下操作:
<version>${project.version}</version>