繼承spring-boot-starter-parent
要成為一個spring boot項目,首先就必須在pom.xml中繼承spring-boot-starter-parent,同時指定其版本
-
<parent>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-parent</artifactId>
-
<version>1.5.6.RELEASE</version>
-
</parent>
環境參數
在普通maven項目中,需要在pom.xml中配置插件來修改jdk版本,utf-8編碼等環境參數,在spring boot中則更加簡單。
在eclipse中按ctrl+左鍵點擊上面的spring-boot-starter-parent,查看其源碼,其中有下面這段內容
-
<properties>
-
<java.version>1.6</java.version>
-
<resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders -->
-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-
<maven.compiler.source>${java.version}</maven.compiler.source>
-
<maven.compiler.target>${java.version}</maven.compiler.target>
-
</properties>
從上面可以看出,spring boot項目默認的jdk版本是1.6,默認的編碼是utf-8。如果我們要修改這些環境參數,比如將jdk版本改成1.8,只需要在我們項目的pom.xml文件中覆蓋要修改的參數,如下
-
<properties>
-
<java.version>1.8</java.version>
-
</properties>
依賴
-
<properties>
-
<activemq.version>5.14.5</activemq.version>
-
<antlr2.version>2.7.7</antlr2.version>
-
<appengine-sdk.version>1.9.53</appengine-sdk.version>
-
<!-- 以下省略.... -->
-
</properties>
-
<dependencyManagement>
-
<dependencies>
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot</artifactId>
-
<version>1.5.4.RELEASE</version>
-
</dependency>
-
<!-- 以下省略.... -->
-
</dependencies>
-
</dependencyManagement>
<dependencyManagement>中的內容,就是為什么我們自己項目中配置spring boot組件依賴時,可以不用配置版本,比如
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-web</artifactId>
-
</dependency>
生成可執行jar文件
默認情況下,maven打包生成的jar文件是用來給其他項目依賴用的,是無法直接運行的。spring boot根據自生需要,提供了一個插件來生成可執行jar文件。在spring-boot-starter-parent源碼中可以找到,如下:-
<plugin>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-maven-plugin</artifactId>
-
<executions>
-
<execution>
-
<goals>
-
<goal>repackage</goal>
-
</goals>
-
</execution>
-
</executions>
-
<configuration>
-
<mainClass>${start-class}</mainClass>
-
</configuration>
-
</plugin>
-
<plugin>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-maven-plugin</artifactId>
-
</plugin>
使用 Spring Boot ,你不需要提供相關依賴的版本,Spring Boot 會自動對其進行管理。當你進行系統升級的時候,只需要修改Spring Boot 的版本號就行了,Spring Boot 會自動對其他的依賴進行升級。當然,你也可以根據具體的需要,指定依賴版本來覆蓋Spring Boot 的推薦的依賴版本。
Maven
我們知道,可以通過繼承spring-boot-starter-parent 的方式來添加 Spring Boot 的相關支持,這個父項目為我們提供以下幾個默認配置:
- Java 1.6 編譯級別
- UTF-8編碼方式
- 依賴管理模塊,你在添加依賴的時候可以省略<version>標簽,繼承自 spring-boot-dependencies POM
- 資源文件過濾(將${…}定義的變量,在輸出到target文件中時,替換為變量的值)
- 插件配置(exec plugin, surefire, Git commit ID, shade)
- application.properties 和 application.yml 文件過濾
POM項目只支持單繼承,但有的時候,我們必須要繼承其他POM,或者使用我們自己的配置。這時,如果我們要添加 Spring Boot 的支持,可以通過其他方式。
我們可以通過引入spring-boot-dependencies,並且設置scope=import,讓Spring Boot來進行依賴管理:
<dependencyManagement> <dependencies> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.3.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
我們可以通過在spring-boot-dependencies之前,引入我們需要的依賴的版本來覆蓋 Spring Boot 提供的依賴版本,例如:
<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.3.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
若想使用新的Java編譯器版本,可添加一個Java版本的屬性,如下:
<properties> <java.version>1.8</java.version> </properties>
若要將項目打包成一個可執行的文件,需要在<plugins>中添加 spring-boot-maven-plugin 插件,如下:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
