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
2. 配置pom.xml文件
<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说明
Spring Boot Maven plugin的最主要goal就是repackage,其在Maven的package生命周期阶段,能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为*.original。
基于上述配置,对一个生成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
<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: https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins.html#build-tool-plugins.maven
https://docs.spring.io/spring-boot/docs/2.5.2/maven-plugin/reference/htmlsingle/
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
maven实战技巧「docker实战系列」使用maven插件构建docker镜像的方法(代码片段)
使用Maven插件构建Docker镜像的方法工具插件名称+官方地址修改宿主机配置(docker可以远程访问)配置DOCKER_HOST例如使用插件构建Docker镜像添加插件构建镜像添加docker-maven-plugin创建Dockerfile内容如下执行以下命令构建Docker... 查看详情
maven系列:maven构建模块化项目之springmvc整合mybatis(01)
一、整合所需jar包 <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring-version}</version></dependency>& 查看详情
java之mavenidea版入门到精通(一篇文章精通系列)(代码片段)
Java之Maven【IDEA版】入门到精通一、Maven简介1、传统项目管理状态分析2、Maven是什么3、Maven的作用二、下载与安装1、Maven下载2、Maven安装三、Maven基础概念1、仓库2、坐标3、本地仓库配置4、Maven阿里云(Aliyun)仓库5、全局setting与用... 查看详情
java之mavenidea版入门到精通(一篇文章精通系列)(代码片段)
Java之Maven【IDEA版】入门到精通一、Maven简介1、传统项目管理状态分析2、Maven是什么3、Maven的作用二、下载与安装1、Maven下载2、Maven安装三、Maven基础概念1、仓库2、坐标3、本地仓库配置4、Maven阿里云(Aliyun)仓库5、全局setting与用... 查看详情
剑指架构师系列-持续集成之maven+nexus+jenkins+git+springboot
1、Nexus与Maven 先说一下这个Maven是什么呢?大家都知道,Java社区发展的非常强大,封装各种功能的Jar包满天飞,那么如何才能方便的引入我们项目,为我所用呢?答案就是Maven,只需要粘贴个Jar包的地址,Maven就会自动到... 查看详情
maven插件之portable-config-maven-plugin(不同环境打包)
大型项目中,分开发环境、测试环境、生产环境等;不同环境,配置不同,或数据源,或服务器,或数据库等; 问题来了,如何使用Maven针对不同的环境来打包呢? Maven提供了Profile的概念,用来解决此类问题,其原理很简单,就是使用变... 查看详情
intellijidea系列教程之常用配置项(代码片段)
...默认1.5版本。1.2解决方案在pom文件中添加maven-compiler-plugin插件,并指定jdk使用的jdk版本即可解决上面 查看详情
jquery插件系列之延迟加载
先上代码enumLazyMode{once,//执行一次模式every//永久执行模式}classLazyItem{constructor(publicelement:JQuery,publiccallback:Function,publicmode:LazyMode=LazyMode.once,publicdiff:number=0){}private_lastHeight:number;//上 查看详情
chrome插件(扩展)开发资料
...:ContentScripts Chrome浏览器扩展开发系列之十一:NPAPI插件的使用 Chrome浏览器扩展开发系列之十:桌面通知Notification Chrome浏览器扩展开发系列之九:Chrome浏览器的chrome.alarms.*API Chrome浏览器扩展开发系列之八:Chrome... 查看详情
jenkins进阶系列之——10publishoverssh插件
说明:这个插件可以通过ssh连接其他Linux机器官方说明:PublishOverSSH安装步骤:系统管理→管理插件→可选插件→ArtifactUploaders→PublishOverSSH 系统设置(所有的高级全部展开)公共配置:Passphrase:密码(key的密码,如果你设置... 查看详情
deepstream系列之鱼眼相机测试
...查看系列文章目录0背景从deepstream3.0开始,增加了dewarper插件,该插件可以接收鱼眼相机视频,可以产生最多4路解畸变后的视频输出,接下来对该插件的使用方法进行一个介绍测试版本:deepstream6.01插件介绍插件地址:Gst-nvdewarper... 查看详情
deepstream系列之鱼眼相机测试
...查看系列文章目录0背景从deepstream3.0开始,增加了dewarper插件,该插件可以接收鱼眼相机视频,可以产生最多4路解畸变后的视频输出,接下来对该插件的使用方法进行一个介绍测试版本:deepstream6.01插件介绍插件地址:Gst-nvdewarper... 查看详情
重学springboot系列之基础知识回顾(代码片段)
...okSlf4j注解Builder注解IDEA环境下的热加载与热部署使用Jrebel插件devtools实现热加载修改一下application.properties配置LiveReload插件开发过程中常用IDEA插件CodotaAutofillingJavacallargumentsGsonFormatRainbowBracketsMavenHelperKeypromoterX换个美女图SpringBoot... 查看详情
系统开发系列之myeclipse创建webservice详细教程和调用教程(spring框架+maven+cxf框架)
1回顾【系统开发系列之MyEclipse创建WebService详细教程和调用教程】介绍了使用JWS实现WebService接口的发布和调用,主要涉及的点有:(1)MyEclipse点击File->New->Webservicesproject,选择JAX-WS版本为2.0;(2)添加相应的JAX-WSLibrary,右... 查看详情
jenkins系列之——前言jenkins初识
...构建生成哪些jar,哪次构建使用哪个版本的jar等。l 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。1 Jenkins的由来目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周 查看详情
qt系列文章之三十六(自定义qtdesigner插件)
文章目录前言创建QtDesignerWidget插件项目插件项目各文件的功能实现MyBatteryPlugin类MyBatteryDesignerPlugin.pro的内容内置项目mybattery.pri组件类MyBattery的定义插件的编译与安装使用自定义插件使用MSVC编译器输出中文的问题运行效果图demo... 查看详情
qt系列文章之三十六(自定义qtdesigner插件)
文章目录前言创建QtDesignerWidget插件项目插件项目各文件的功能实现MyBatteryPlugin类MyBatteryDesignerPlugin.pro的内容内置项目mybattery.pri组件类MyBattery的定义插件的编译与安装使用自定义插件使用MSVC编译器输出中文的问题运行效果图demo... 查看详情
deepstream系列之图片保存功能
...口。NV官方提供的保存图片有两种方式:(1)通过dsexample插件,在插件中增加opencv的相关功能,实现图片保存。但该方法需要额外增加一个插件,使用起来比较笨重,无法灵活的在pipeline任意位置保存图片。而且在deepstream-app中... 查看详情