Spring Boot的Maven插件Spring Boot Maven plugin詳解
Spring Boot的Maven插件(Spring Boot Maven plugin)能夠以Maven的方式為應(yīng)用提供Spring Boot的支持,即為Spring Boot應(yīng)用提供了執(zhí)行Maven操作的可能。
Spring Boot Maven plugin能夠?qū)pring Boot應(yīng)用打包為可執(zhí)行的jar或war文件,然后以通常的方式運(yùn)行Spring Boot應(yīng)用。
Spring Boot Maven plugin的最新版本為2017.6.8發(fā)布的1.5.4.RELEASE,要求Java 8, Maven 3.2及以后。
1. Spring Boot Maven plugin的5個(gè)Goals
- spring-boot:repackage,默認(rèn)goal。在mvn package之后,再次打包可執(zhí)行的jar/war,同時(shí)保留mvn package生成的jar/war為.origin
- spring-boot:run,運(yùn)行Spring Boot應(yīng)用
- spring-boot:start,在mvn integration-test階段,進(jìn)行Spring Boot應(yīng)用生命周期的管理
- spring-boot:stop,在mvn integration-test階段,進(jìn)行Spring Boot應(yīng)用生命周期的管理
- spring-boot:build-info,生成Actuator使用的構(gòu)建信息文件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說(shuō)明
Spring Boot Maven plugin的最主要goal就是repackage,其在Maven的package生命周期階段,能夠?qū)vn package生成的軟件包,再次打包為可執(zhí)行的軟件包,并將mvn package生成的軟件包重命名為*.original。
基于上述配置,對(duì)一個(gè)生成Jar軟件包的項(xiàng)目執(zhí)行如下命令。
mvn package spring-boot:repackage
可以看到生成的兩個(gè)jar文件,一個(gè)是*.jar,另一個(gè)是*.jar.original。
在執(zhí)行上述命令的過(guò)程中,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: sam 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會(huì)在打包過(guò)程中自動(dòng)為Manifest文件設(shè)置Main-Class屬性,事實(shí)上該屬性究竟作用幾何,還可以受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屬性的值可以如下:
- JAR,即通常的可執(zhí)行jar
Main-Class: org.springframework.boot.loader.JarLauncher
- WAR,即通常的可執(zhí)行war,需要的servlet容器依賴位于WEB-INF/lib-provided
Main-Class: org.springframework.boot.loader.warLauncher
- ZIP,即DIR,類似于JAR
Main-Class: org.springframework.boot.loader.PropertiesLauncher
- MODULE,將所有的依賴庫(kù)打包(scope為provided的除外),但是不打包Spring Boot的任何Launcher。
- NONE,將所有的依賴庫(kù)打包,但是不打包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變量用作是否跳過(guò)integration-test的標(biāo)志位。
maven-failsafe-plugin用作integration-test的主要執(zhí)行目標(biāo)。
spring-boot-maven-plugin用以為integration-test提供支持。
執(zhí)行integration-test的Maven命令如下:
mvn verify
或者
mvn verify -Dit.skip=false
參考鏈接:
http://docs.spring.io/spring-boot/docs/1.5.4.RELEASE/maven-plugin/
https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html
到此這篇關(guān)于Spring Boot的Maven插件Spring Boot Maven plugin詳解的文章就介紹到這了,更多相關(guān)Spring Boot Maven plugin內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- idea中maven使用tomcat7插件運(yùn)行run報(bào)錯(cuò)Could not start Tomcat問(wèn)題
- 如何使用maven-helper插件解決jar包沖突問(wèn)題
- SpringBoot Maven打包插件spring-boot-maven-plugin無(wú)法解析原因
- SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代碼
- maven插件maven-assembly-plugin打包歸納文件zip/tar使用
- maven插件maven-jar-plugin構(gòu)建jar文件的詳細(xì)使用
- Maven插件之Dependency:analyze的使用
相關(guān)文章
Spring中的@PostConstruct注解使用方法解析
這篇文章主要介紹了Spring中的@PostConstruct注解使用方法解析,@PostConstruct注解是用來(lái)處理在@Autowired注入屬性后init()方法之前,對(duì)一些零散的屬性進(jìn)行賦值的注解,需要的朋友可以參考下2023-11-11Kafka使用Java客戶端進(jìn)行訪問(wèn)的示例代碼
本篇文章主要介紹了Kafka使用Java客戶端進(jìn)行訪問(wèn)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09SpringBoot中添加監(jiān)聽(tīng)器及創(chuàng)建線程的代碼示例
這篇文章主要介紹了SpringBoot中如何添加監(jiān)聽(tīng)器及創(chuàng)建線程,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下2023-06-06Javaweb項(xiàng)目啟動(dòng)Tomcat常見(jiàn)的報(bào)錯(cuò)解決方案
Java Web項(xiàng)目啟動(dòng)Tomcat時(shí)可能會(huì)遇到各種錯(cuò)誤,本文就來(lái)介紹一下Javaweb項(xiàng)目啟動(dòng)Tomcat常見(jiàn)的報(bào)錯(cuò)解決方案,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02