理解spring-boot-starter-parent

理解spring-boot-starter-parent

通過spring initializr,我們可以快速構(gòu)建一個springboot應(yīng)用,如果你選擇的是Maven來管理項目,在默認(rèn)的pom文件中有這么一個section:

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

它表示當(dāng)前pom文件從spring-boot-starter-parent繼承下來,在spring-boot-starter-parent中提供了很多默認(rèn)的配置,這些配置可以大大簡化我們的開發(fā)。

Parent Poms Features

通過繼承spring-boot-starter-parent,默認(rèn)具備了如下功能:

  1. Java版本(Java8)
  2. 源碼的文件編碼方式(UTF-8)
  3. 依賴管理
  4. 打包支持
  5. 動態(tài)識別資源
  6. 識別插件配置
  7. 識別不同的配置,如:application-dev.properties 和 application-dev.yml

以上繼承來的特性有的并非直接繼承自spring-boot-starter-parent,而是繼承自spring-boot-starter-parent的父級spring-boot-dependencies

需要特別說明的是,application-dev.properties 和 application-dev.yml支持spring風(fēng)格的占位符(${…?}),但是Maven項目把對占位符的支持改為(@..@),可以通過設(shè)置Maven屬性resource.delimiter來重置回去。

繼承spring-boot-starter-parent后,大大簡化了我們的配置,它提供了豐富的常用的默認(rèn)的依賴的版本定義,我們就不需要再次指定版本號:

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

假設(shè)我們需要定制自己的版本號,可以通過下面的方式重寫:

<properties>
    <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>

不繼承spring-boot-starter-parent構(gòu)建springboot項目

有時候項目可能有自己的parent poms,Maven只允許定義一個parent pom,這時的項目雖然沒有繼承自spring-boot-starter-parent,但是依賴管理始終需要的,可以通過如下配置引入spring-boot-dependencies的依賴管理功能:

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

那么在這種情況下要重寫依賴的版本號就需要用另外的方式:

<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>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.0.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

除了依賴管理,打包也是需要的:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>1.4.0.RELEASE</version>
      <configuration>
        <executable>true</executable>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>repackage</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

增加以上配置后就可以使用熟悉的mvn pacakge成一個jar了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容