<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
spring boot加上这个插件,才可以使用Java -jar命令来启动jar包,并且有了这个插件,
打的包里面才会有maven依赖的jar包和spring boot的启动类,所以打的jar包也就比较大,
而且MANIFEST.MF文件里面也会有启动类的信息。但是如果不加这个插件,则打的包里面就只有class文件,
没有依赖的Jar包,MANIFEST.MF文件里面也没有启动类的信息,所以如果不加这个插件就不能独立启动。
注意:在用idea调试的时候加不加插件都可以启动,看不出来不同,所以必须要独立启动jar包才可以看出来。
而且如果用了spring boot但是不需要独立启动,就不要加这个插件,否则spring boot会因为找不到启动类而导致报错

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文件

[html] view plain copy
  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. <version>1.5.4.RELEASE</version>
  7. </plugin>
  8. </plugins>
  9. </build>

3.mvn package spring-boot:repackage说明

Spring Boot Maven plugin的最主要goal就是repackage,其在Maven的package生命周期阶段,能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为*.original。

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

[html] view plain copy
  1. mvn package spring-boot:repackage

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

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

[html] view plain copy
  1. Manifest-Version: 1.0
  2. Implementation-Title: gs-consuming-rest
  3. Implementation-Version: 0.1.0
  4. Archiver-Version: Plexus Archiver
  5. Built-By: exihaxi
  6. Implementation-Vendor-Id: org.springframework
  7. Spring-Boot-Version: 1.5.3.RELEASE
  8. Implementation-Vendor: Pivotal Software, Inc.
  9. Main-Class: org.springframework.boot.loader.JarLauncher
  10. Start-Class: com.ericsson.ramltest.MyApplication
  11. Spring-Boot-Classes: BOOT-INF/classes/
  12. Spring-Boot-Lib: BOOT-INF/lib/
  13. Created-By: Apache Maven 3.5.0
  14. 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控制的,示例如下。

[html] view plain copy
  1. <plugin>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-maven-plugin</artifactId>
  4. <version>1.5.4.RELEASE</version>
  5. <configuration>
  6. <mainClass>${start-class}</mainClass>
  7. <layout>ZIP</layout>
  8. </configuration>
  9. <executions>
  10. <execution>
  11. <goals>
  12. <goal>repackage</goal>
  13. </goals>
  14. </execution>
  15. </executions>
  16. </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

[html] view plain copy
  1. <properties>
  2. <it.skip>false</it.skip>
  3. </properties>
  4. <build>
  5. <plugins>
  6. <plugin>
  7. <groupId>org.apache.maven.plugins</groupId>
  8. <artifactId>maven-failsafe-plugin</artifactId>
  9. <configuration>
  10. <skip>${it.skip}</skip>
  11. </configuration>
  12. </plugin>
  13. <plugin>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-maven-plugin</artifactId>
  16. <version>1.5.4.RELEASE</version>
  17. <executions>
  18. <execution>
  19. <id>pre-integration-test</id>
  20. <goals>
  21. <goal>start</goal>
  22. </goals>
  23. <configuration>
  24. <skip>${it.skip}</skip>
  25. </configuration>
  26. </execution>
  27. <execution>
  28. <id>post-integration-test</id>
  29. <goals>
  30. <goal>stop</goal>
  31. </goals>
  32. <configuration>
  33. <skip>${it.skip}</skip>
  34. </configuration>
  35. </execution>
  36. </executions>
  37. </plugin>
  38. </plugins>
  39. </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

参考链接:

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

spring-boot-maven-plugin插件相关推荐

  1. Spring Boot的Maven插件Spring Boot Maven plugin详解

    pring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven ...

  2. maven打包插件----Spring Boot Maven Plugin

    官方文档链接地址:http://docs.spring.io/spring-boot/docs/1.3.0.BUILD-SNAPSHOT/maven-plugin/index.html 第一部分 Sp ...

  3. org.springframework.boot:spring boot maven plugin丢失---SpringCloud Alibaba_若依微服务框架改造_--工作笔记012

    警告]"build.plugins.plugin.version"for org.springframework.boot:spring boot maven plugin丢失. ...

  4. Spring Boot Maven插件

    Spring Boot Maven插件提供了使用Spring Boot应用程序步骤如下:   重新打包:创建一个可自动执行的jar或war文件.它可以替换常规工件,或者可以使用单独的分类器附加到构建生 ...

  5. Spring Boot——Maven使用SystemPath引用本地jar:ClassNotFoundException

    问题描述 <dependency><groupId>com.dingtalk</groupId><artifactId>dingtalk-api-sdk ...

  6. Spring Boot+Maven实现车牌训练、识别系统

    目录 1.项目功能 2.项目概述 3.项目环境 之前为各位朋友分享过Python+OpenCV实现车牌检测与识别,本篇博文为各位分享Spring Boot+Maven实现车牌训练.识别系统. 1.项目 ...

  7. spring boot maven项目返回值乱码的解决方法

    spring boot maven项目返回值乱码的解决方法 1.先看乱码效果: spring boot maven项目,返回值乱码,如下图: 控制台打印log乱码,如下图: 有swagger的话,sw ...

  8. Spring boot + maven + jetty9在提交表单的时候出现Form too large

    使用Spring boot + maven + jetty9 提交表单的时候,表单过长时,会在org.eclipse.jetty.server.Requset抛出Form too large:XXX ...

  9. 调用支付宝第三方接口(沙箱环境) Spring Boot+Maven

    调用支付宝第三方接口(沙箱环境) Spring Boot+Maven 一.蚂蚁金服开放平台的操作 网址:https://open.alipay.com/platform/home.htm 支付宝扫码登 ...

  10. eclipse maven plugin 插件 安装 和 配置

    本文转自:http://www.blogjava.net/fancydeepin/archive/2012/07/13/eclipse_maven3_plugin.html maven3 安装: 安装 ...

最新文章

  1. 跨平台PHP调试器设计及使用方法——拾遗
  2. Android新浪微博client(七)——ListView图片异步加载、高速缓存
  3. ai的预览模式切换_绝对高级!AI打造超酷矩阵纬度文字效果!
  4. lodop打印不显示页码_Lodop插件实现打印功能
  5. python怎么创建txt文件啊_python根据txt文本批量创建文件夹
  6. python传递变量_在Python中传递变量
  7. 《Pro ASP.NET MVC 3 Framework》学习笔记之二十四【Controllers和Actions】
  8. Python获取文件夹下的所有文件名
  9. goldendict设置使用vlc或mplayer发音
  10. Understanding, Operating and Monitoring Apache Kafka
  11. unity应用开发实战案例_Unity AR增强现实开发实战
  12. 天价电费成5G建设拦路虎,多省出台政策给运营商减负
  13. Interpreting visually-grounded navigation instructions in real environments论文翻译
  14. Vue.js项目实战——Day(1)
  15. 解析12306订票流程
  16. Mac 打印机打印乱码%! PS -Adobe -3.0 %!APL_DSL_Encoding:UTF8
  17. 【windows】卸载360壁纸
  18. linux批量删除文件或者文件夹
  19. 消息队列之RabbitMQ原理
  20. 如何使用Python3生成HmacSHA256加密

热门文章

  1. 怎样让计算机快速开机,怎样设置可以让电脑快速启动开机.doc
  2. 2021庐江高考成绩查询,2021庐江高考考点查询入口https://lj.hfzsks.org/list_score/index.php?seach_t...
  3. weui 导航悬浮固定
  4. 从0开始学golang--1--部署本地服务器
  5. 2019.01.24 NOIP训练 旅行(轮廓线dp)
  6. 【IDE】我的花里胡哨VS
  7. 被App Store拒绝的N个原因
  8. pearson, kendall 和spearman三种相关分析方法的区别
  9. 基于Jenkins的嵌入式软件持续集成方法
  10. (19)FPGA面试题设计前端流程