13.2.2 不配置父POM使用Spring Boot

并不是每个人都喜欢继承spring-boot-starter-parent的POM。您可能需要使用自己公司标准的POM,或者您可能只是希望显式声明所有的Maven配置。

如果您不想使用spring-boot-starter-parent,您仍然可以通过使用scope=import依赖来继续享有依赖管理(但不是插件管理)的好处:

<dependencyManagement>
     <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.7.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

该设置不允许您使用上述的属性来覆盖单个依赖。要实现那样的结果,您需要在项目的dependencyManagement中添加一项,该项位于spring-boot-dependencies之前。例如,要升级另一个Spring Data版本序列,您需要将如下内容添加到pom.xml中。

<dependencyManagement>
    <dependencies>
        <!-- Override Spring Data release train provided by Spring Boot -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>Fowler-SR2</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.7.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在上面的例子中我们指定了POM,其实任何依赖类型都可以以同样方式覆盖。


书籍推荐