Spring Boot的Maven插件Spring Boot Maven plugin詳解

Spring Boot的Maven插件(Spring Boot Maven plugin)能夠以Maven的方式為應用提供Spring Boot的支持,即為Spring Boot應用提供了執行Maven操作的可能。

Spring Boot Maven plugin能夠將Spring Boot應用打包為可執行的jar或war文件,然後以通常的方式運行Spring Boot應用。

Spring Boot Maven plugin的最新版本為2017.6.8發佈的1.5.4.RELEASE,要求Java 8, Maven 3.2及以後。

1. Spring Boot Maven plugin的5個Goals

  • spring-boot:repackage,默認goal。在mvn package之後,再次打包可執行的jar/war,同時保留mvn package生成的jar/war為.origin
  • spring-boot:run,運行Spring Boot應用
  • spring-boot:start,在mvn integration-test階段,進行Spring Boot應用生命週期的管理
  • spring-boot:stop,在mvn integration-test階段,進行Spring Boot應用生命週期的管理
  • spring-boot:build-info,生成Actuator使用的構建信息文件build-info.properties

2. 配置pom.xml文件

Spring Boot的Maven插件Spring Boot Maven plugin詳解

3.mvn package spring-boot:repackage說明

Spring Boot Maven plugin的最主要goal就是repackage,其在Maven的package生命週期階段,能夠將mvn package生成的軟件包,再次打包為可執行的軟件包,並將mvn package生成的軟件包重命名為*.original。

基於上述配置,對一個生成Jar軟件包的項目執行如下命令。

  1. mvn package spring-boot:repackage

可以看到生成的兩個jar文件,一個是*.jar,另一個是*.jar.original。

在執行上述命令的過程中,Maven首先在package階段打包生成*.jar文件;然後執行spring-boot:repackage重新打包,查找Manifest文件中配置的Main-Class屬性,如下所示:

Spring Boot的Maven插件Spring Boot Maven plugin詳解

注意,其中的Main-Class屬性值為org.springframework.boot.loader.JarLauncher;

Start-Class屬性值為com.ericsson.ramltest.MyApplication。

其中com.ericsson.ramltest.MyApplication類中定義了main()方法,是程序的入口。

通常,Spring Boot Maven plugin會在打包過程中自動為Manifest文件設置Main-Class屬性,事實上該屬性究竟作用幾何,還可以受Spring Boot Maven plugin的配置屬性layout控制的,示例如下。

Spring Boot的Maven插件Spring Boot Maven plugin詳解

注意,這裡的layout屬性值為ZIP。layout屬性的值可以如下:

  • JAR,即通常的可執行jar

Main-Class: org.springframework.boot.loader.JarLauncher

  • WAR,即通常的可執行war,需要的servlet容器依賴位於WEB-INF/lib-provided

Main-Class: org.springframework.boot.loader.warLauncher

  • ZIP,即DIR,類似於JAR

Main-Class: org.springframework.boot.loader.PropertiesLauncher

  • MODULE,將所有的依賴庫打包(scope為provided的除外),但是不打包Spring Boot的任何Launcher。
  • NONE,將所有的依賴庫打包,但是不打包Spring Boot的任何Launcher。

4.integration-test階段中的Spring Boot Maven plugin的start/stop

Spring Boot的Maven插件Spring Boot Maven plugin詳解

注意,it.skip變量用作是否跳過integration-test的標誌位。

maven-failsafe-plugin用作integration-test的主要執行目標。

spring-boot-maven-plugin用以為integration-test提供支持。

執行integration-test的Maven命令如下:

mvn verify

或者

mvn verify -Dit.skip=false


分享到:


相關文章: