没有版本的maven依赖

最近我一直在研究一段时间前开发的项目的一些改进,这就是我发现的。 pom文件中的许多依赖项没有指定版本,但它们已被解析。 该项目由1个根模块和2个子模块组成。 使用聚合器模式,这意味着根本没有dependencyManagement部分。 上层项目简单地聚合了2个模块,这就是它的全部function。 子项目不会将其称为父项。 他们有不同的父母。 我无法理解的是既没有子项目本身也没有它们的父项(事实上,它也没有依赖管理)为某些依赖项指定了版本。 例如:

 javax.mail javax.mail-api   com.sun.mail javax.mail   com.sun.mail imap   org.slf4j jcl-over-slf4j   org.slf4j jul-to-slf4j   ch.qos.logback logback-classic  

有人可以帮我解决这个问题吗? 似乎maven使用一些默认策略处理版本控制。

好的,我想我会自己回答。 当然我看了一下依赖:tree,但是我提到的树的第一级成员所有的依赖关系。 我没有立即注意到的是, dependencyManagement不存在于父级中,但它存在于子模块中,它包含的内容更有趣:

   io.spring.platform platform-bom 1.0.2.RELEASE pom import  

我之前从未使用过Spring IO平台,所以对我来说这是一个全新的概念。 事实certificate,该平台包含了相当多的预配置依赖项: http : //docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions

如果没有定义工件的版本,maven就不可能工作。 它们应该在子模块或父模块中的dependencyManagement标签中的某处定义。 请检查您的pom层次结构。 在项目的子模块目录中使用mvn help:effective-pom 。 您还可以使用mvn dependency:tree来查找哪些工件 – 以及包含版本号的完整工件信息 – 在依赖关系管理的结果中得到解决。