如果您使用 spring 平台 bom,是否应该使用父级?

Should you use the parent if you are using the spring platform bom?

有些依赖版本没有,所以我添加了 spring 平台 BOM,parent 声明还有用吗?

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

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.spring.platform</groupId>
            <artifactId>platform-bom</artifactId>
            <version>1.1.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

我个人更喜欢使用 platform-bom 作为 parent,即

<parent>
    <groupId>io.spring.platform</groupId>
    <artifactId>platform-bom</artifactId>
    <version>1.1.1.RELEASE</version>
    <relativePath />
</parent>

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

通过这种方式,我不必定义 spring-boot 版本号,它会自动更新为 spring 平台的较新版本,我不必担心任何不一致。

有关所有托管依赖项的完整列表,请参阅 http://docs.spring.io/platform/docs/1.1.1.RELEASE/reference/htmlsingle/#appendix-dependency-versions

编辑:正如 Andy Wilkinson 所指出的,spring 平台继承了 spring-boot-starter-parent 所以所有 "sensible defaults" 如 http://docs.spring.io/spring-boot/docs/1.2.1.RELEASE/reference/htmlsingle/#using-boot-maven 也适用。

导入 BOM(在 dependencyManagement 部分)和使用 parent

之间存在重要区别

dependencyManagement中导入的BOM仅提供依赖项的默认值,但Parent-way也包括其他部分(pluginsplugin-managentdependenciesdependencyManagement...)

因此,当您删除父级 spring-boot-starter-parent 时,您必须首先复制 plugin-managent 您需要的内容。