最近我一直在研究一些前一段时间开发的项目的一些改进,这就是我发现的。很多pom文件中的依赖关系都没有指定版本,但它们已解决。该项目由1个根模块和2个子模块组成。使用聚合器模式,这意味着根本没有dependencyManagement部分。较高级的项目只需要汇总两个模块,这就是它的全部功能。子项目不会将其称为父项。他们有不同的父母。我无法理解的是,子项目本身和它们的父项(事实上它也没有依赖项管理)都没有指定某些依赖项的版本。例如:没有版本的maven dependency
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>imap</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
有人可以帮我弄清楚这一点吗?似乎maven处理一些默认策略的版本控制。
您能显示'mvn -version'输出吗? –
没有定义工件的版本,maven工作是不可能的。它们应该在子模块或父代中的'dependencyManagement'标签中的某处定义。请检查您的pom层次结构。使用mvn help:effective-pom – Ozgen
您是否已通过'mvn help:effective-pom -Doutput = result.xml'进行检查,并检查是否没有dependencyManagement。 – khmarbaise