• 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

    1. 配置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生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为.original*。

    注意:在用idea调试的时候加不加插件都可以启动,看不出来不同,所以必须要独立启动jar包才可以看出来。
    而且如果用了spring boot但是不需要独立启动,就不要加这个插件,否则spring boot会因为找不到启动类而导致报错

    基于上述配置,对一个生成Jar软件包的项目执行如下命令。

    mvn package spring-boot:repackage

    可以看到生成的两个jar文件,一个是*.jar,另一个是*.jar.original。
    在执行上述命令的过程中,Maven首先在package阶段打包生成*.jar文件;然后执行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属性的值可以如下:

    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-plugin用以为integration-test提供支持。

    执行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

  • 相关阅读:
    迷宫
    小猫
    数位DP模板
    摘桃子
    [USACO10HOL]牛的政治Cow Politics
    ArcEngine中合并断开的线要素(根据几何判断)
    ArcEngine环境下合并断开的线要素(根据属性)
    Web Service和WCF的到底有什么区别
    OGC 的 WMS、WFS 及WCS服务(转)
    ArrayList的使用方法详解(转)
  • 原文地址:https://www.cnblogs.com/seasail/p/12179376.html
Copyright © 2020-2023  润新知