如果你使用弹簧平台bom,你应该使用父母吗?

时间:2015-01-28 18:59:58

标签: spring maven spring-boot

某些依赖版本不在,所以我添加了弹簧平台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>

2 个答案:

答案 0 :(得分:3)

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

<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 platform自动更新,我不必担心任何不一致。

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

编辑:正如Andy Wilkinson指出的那样,Spring平台继承spring-boot-starter-parent所以http://docs.spring.io/spring-boot/docs/1.2.1.RELEASE/reference/htmlsingle/#using-boot-maven中描述的所有“合理默认值”也适用。

答案 1 :(得分:3)

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

之间存在重要差异

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

因此,当您移除父dependencyManagement时,您必须先复制所需的spring-boot-starter-parent内容。