Spring Boot的Maven插件(Spring Boot Maven plugin)能夠以Maven的方式為應用提供Spring Boot的支持,,即為Spring Boot應用提供了執(zhí)行Maven操作的可能,。 Spring Boot Maven plugin能夠將Spring Boot應用打包為可執(zhí)行的jar或war文件,然后以通常的方式運行Spring Boot應用,。 Spring Boot Maven plugin的最新版本為2017.6.8發(fā)布的1.5.4.RELEASE,,要求Java 8, Maven 3.2及以后。
1. Spring Boot Maven plugin的5個Goals
- spring-boot:repackage,,默認goal,。在mvn package之后,再次打包可執(zhí)行的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文件 - <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>1.5.4.RELEASE</version>
- </plugin>
- </plugins>
- </build>
3.mvn package spring-boot:repackage說明 Spring Boot Maven plugin的最主要goal就是repackage,,其在Maven的package生命周期階段,能夠將mvn package生成的軟件包,,再次打包為可執(zhí)行的軟件包,,并將mvn package生成的軟件包重命名為*.original。
基于上述配置,,對一個生成Jar軟件包的項目執(zhí)行如下命令,。 - mvn package spring-boot:repackage
可以看到生成的兩個jar文件,一個是*.jar,另一個是*.jar.original,。
在執(zhí)行上述命令的過程中,,Maven首先在package階段打包生成*.jar文件;然后執(zhí)行spring-boot:repackage重新打包,,查找Manifest文件中配置的Main-Class屬性,,如下所示: - Manifest-Version: 1.0
- Implementation-Title: gs-consuming-rest
- Implementation-Version: 0.1.0
- Archiver-Version: Plexus Archiver
- Built-By: exihaxi
- Implementation-Vendor-Id: org.springframework
- Spring-Boot-Version: 1.5.3.RELEASE
- Implementation-Vendor: Pivotal Software, Inc.
- Main-Class: org.springframework.boot.loader.JarLauncher
- Start-Class: com.ericsson.ramltest.MyApplication
- Spring-Boot-Classes: BOOT-INF/classes/
- Spring-Boot-Lib: BOOT-INF/lib/
- Created-By: Apache Maven 3.5.0
- Build-Jdk: 1.8.0_131
注意,其中的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控制的,示例如下,。 - <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>1.5.4.RELEASE</version>
- <configuration>
- <mainClass>${start-class}</mainClass>
- <layout>ZIP</layout>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
注意,這里的layout屬性值為ZIP,。layout屬性的值可以如下: Main-Class: org.springframework.boot.loader.JarLauncher
- WAR,,即通常的可執(zhí)行war,需要的servlet容器依賴位于WEB-INF/lib-provided
Main-Class: org.springframework.boot.loader.warLauncher 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 - <properties>
- <it.skip>false</it.skip>
- </properties>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <configuration>
- <skip>${it.skip}</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>1.5.4.RELEASE</version>
- <executions>
- <execution>
- <id>pre-integration-test</id>
- <goals>
- <goal>start</goal>
- </goals>
- <configuration>
- <skip>${it.skip}</skip>
- </configuration>
- </execution>
- <execution>
- <id>post-integration-test</id>
- <goals>
- <goal>stop</goal>
- </goals>
- <configuration>
- <skip>${it.skip}</skip>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
注意,,it.skip變量用作是否跳過integration-test的標志位。
maven-failsafe-plugin用作integration-test的主要執(zhí)行目標,。 spring-boot-maven-plugin用以為integration-test提供支持,。
執(zhí)行integration-test的Maven命令如下: mvn verify 或者 mvn verify -Dit.skip=false
參考鏈接: http://docs./spring-boot/docs/1.5.4.RELEASE/maven-plugin/ https://docs./spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html
|