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及之後。

css

Spring Boot Maven plugin的5個Goalshtml

  • 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

複製代碼
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.1.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
複製代碼

3.mvn package spring-boot:repackage說明apache

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

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

mvn package spring-boot:repackage  

能夠看到生成的兩個jar文件,一個是*.jar,另外一個是*.jar.original。spring-boot

 

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

複製代碼
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;ui

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

其中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屬性的值能夠以下:

  • 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

複製代碼
<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的主要執行目標。

spring-boot-maven-plugin用覺得integration-test提供支持。

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

mvn verify

或者

mvn verify -Dit.skip=false

參考連接:68. Spring Boot Maven Plugin

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

原文地址:https://www.cnblogs.com/liaojie970/p/9007577.html
相關文章
相關標籤/搜索