如果我没有为Maven依赖项指定版本,会发生什么?

Jav*_*ons 4 maven

我在项目中看到maven依赖指定如下,

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

在依赖项中没有定义版本,所以如果我不提供版本名称以及为什么如上所述给出会发生什么.

有人会解释原因吗.

Nil*_*lsH 9

我不认为你可以在你的项目的普通依赖部分中这样做.我知道允许这种情况的唯一情况是当你继承一个带有一个<dependencyManagement>部分的父项目时,该部分用于协调一组项目中的依赖版本.然后你可以使用"简写"定义,没有版本.但它仍然有一个版本,它继承自父项目中定义的依赖项.

在pom中还有一些其他地方也可以删除版本,但这些与包含依赖项(如插件/ exlude等)并不直接相关.

  • 至少有三种方法可以设置.一个是从父pom继承依赖管理,第二个是在同一个pom中使用依赖管理,第三个是依赖于具有范围的pom文件:import在依赖管理中具有它.或者这些的任何组合.但你在基本原则上是正确的 - 它必须在某个地方定义*. (2认同)