为什么我必须在父pom中添加依赖项?

时间:2018-08-09 00:29:24

标签: java maven spring-boot dependency-management

我有来自pom.xml的这段代码:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
</parent>

<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>

</dependencies>

当我将鼠标悬停在某些依赖项上时,会显示以下消息:The managed version is #someNumber The artifact is managed in org.springframework.boot:spring-boot-dependencies:2.0.3.RELEASE。这条消息可以吗?如果是,为什么parent已经拥有所有依赖项,为什么我必须声明正在使用的依赖项?

如果我仍然必须声明依赖项,那么拥有parent有什么好处?仅用于管理依赖项的版本?

1 个答案:

答案 0 :(得分:4)

父POM不会(有必要)告诉您的项目包括所有这些依赖项。它说如果您需要依赖项,请使用此版本。

例如,某些Spring Boot项目完全基于消息,不需要Web片段-无需MVC,无需servlet容器。将所有这些都包含在不需要的项目中会很浪费。

有关更多信息,请查看the documentation for Maven dependency management