springboot工程中maven插件浅析
springboot工程中都会配置插件进行编译、打包等操作,下面对常用的maven插件进行简单分析。
一、spring-boot-maven-plugin
spring-boot-maven-plugin能够以maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行maven操作的可能;能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。
spring-boot-maven-plugin提供了7个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;
- spring-boot:build-help,Display help information on spring-boot-maven-plugin.
Call mvn spring-boot:help -Ddetail=true -Dgoal= to display
parameter details. - spring-boot:build-image
repackage就是在maven的package生命周期阶段,能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为*.original。
二、maven-compiler-plugin
maven-compiler-plugin插件配置了java的开发环境和运行环境,还有文件编码。
<build><plugins><!-- 配置当前项目的jdk版本信息 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins>
</build>
三、maven-surefire-plugin
maven-surefire-plugin插件用于mvn 生命周期的测试阶段的插件,可以通过一些参数设置方便的在testNG或junit下对测试阶段进行自定义。
maven本身并不是一个单元测试框架,maven所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行jUnit或者testNG的测试用例。注意需要跳过单元测试,如果工程里存在对数据库进行操作的单元测试必须要使用以下配置将之跳过。
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.22.2</version><configuration><skipTests>true</skipTests></configuration></plugin>
maven打包springboot应用的插件配置
- 普通jar,用于项目依赖引入,不能通过java -jar xx.jar执行,一般不包含其它依赖的jar包。
- 不可执行jar,包含第三方依赖的jar包,避免生成的jar与第三方引入后出现依赖版本冲突。
- 可执行jar,是一种可执行的jar(executable jar),既包含自己代码中的class ,也包含第三方依赖的jar。
1、生成单个可执行jar,使用springboot提供的maven打包插件spring-boot-maven-plugin即可,pom文件的配置如下:
<build><plugins><!-- 常规打包,打出来的jar很大,不易于修改部分文件后增量发布 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- 作用:项目打成jar的同时将本地jar包也引入进去 --><configuration><includeSystemScope>true</includeSystemScope></configuration></plugin></plugins>
</build>
2、提供给第三方使用的,包含所有依赖的普通jar,使用maven打包插件maven-shade-plugin,pom文件的配置如下:
<build><plugins><!-- 提供给第三方使用的,包含所有依赖的普通jar --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><!-- 加入启动类 --><!--<transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>xxx.xxx</mainClass></transformer></transformers>--><createDependencyReducedPom>false</createDependencyReducedPom><filters><filter><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude><exclude>META-INF/*.DSA</exclude><exclude>META-INF/*.RSA</exclude></excludes></filter></filters></configuration></execution></executions></plugin></plugins>
</build>
3、提供给第三方使用的,仅包含项目代码的普通jar,使用maven打包插件maven-jar-plugin,pom文件的配置如下:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><addClasspath>true</addClasspath></manifest></archive></configuration>
</plugin>
springboot工程中maven插件浅析相关推荐
- IntelliJ IDEA中Maven插件无法更新索引之解决办法
为什么80%的码农都做不了架构师?>>> Maven的仓库.索引 中央仓库:目前来说,http://repo1.maven.org/maven2/ 是真正的Maven中央仓库的 ...
- Eclipse 中maven插件坏死解决办法
2019独角兽企业重金招聘Python工程师标准>>> Eclipse中maven插件失效 如果切换工作区间就ok的,但是太麻烦了 关闭eclipse cd /path/worksp ...
- Eclipse中Maven插件的使用技巧及原理
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6698699.html 题目有点大,这里只是自己对Maven插件的一些使用总结,可能会涉及到 ...
- application terminated怎么解决_优雅解决 SpringBoot 工程中多环境下 application.properties 的维护问题...
个人微信号:geekoftaste, 期待与大家一起探讨! 背景 我们知道 SpringBoot 有一个全局的配置文件 application.properties, 可以把工程里用到的占位符,第三方 ...
- 修改eclipse中maven插件仓库地址
由于maven默认的仓库地址带有.m2,当我配置xml的校验时候用到了仓库地址,而校验路径不允许出现".(点)".修改步骤如下: 1,修改apache-maven-3.3.9/co ...
- 在sts中springboot工程的maven解析异常处理
在使用sts打开spring boot工程时,sts在maven的pom文件解析时,出现问题,而在eclipse neon中则没有. 问题描述: Description : Maven Configu ...
- springboot工程中使用spring.version导致无法启动
今天弄了一个netty的服务端工程,结果一直启动不了,debug报错如图: 经过查找,发现是因为pom.xml文件中,有spring.version导致 [解决办法] 将spring.version注 ...
- springboot工程中各个层次的作用+springboot连接数据库的工具汇总+Mybatis的开发方式/语法
下面这个是hibernate的相关工程 下面这个是Mybatis的相关工程 \ 可以看出无论使用哪一种,方式都是一致的. --------------------------------------- ...
- 完美解决IDEA 中Maven插件报红详细攻略(含阿里云镜像下载失败),差点泪崩...冲冲冲
阿里云镜像: <!-- 阿里云仓库 --> <mirror><id>nexus-aliyun</id><mirrorOf>central&l ...
最新文章
- 使用Leangoo管理产品Backlog
- “全面二孩”效应消失,这十大原因导致“生不动”
- C语言 int 转单精度浮点,单精度浮点数与十六进制转换 C语言程序 单片机也可用...
- 了解零信任-SDP关系
- c++构造函数成员初始化中赋值和初始化列表两种方式的区别
- js+php聊天程序
- ChildTuning:试试把Dropout加到梯度上去?
- 中石油训练赛 - Edit Distance(思维+构造)
- Consul-template+nginx实现自动负载均衡
- [leetcode](4.21)4. 有效子数组的数目
- html与js加载的顺序问题defer 代表延迟(加载完所有html在执行js)
- java 监听request_ServletRequest 监听器
- C#的变迁史 - C# 4.0 之多线程篇
- 顺序队列为空的条件_C语言实现顺序队列
- 百度地图API相关点
- shiro安全框架 面试题
- 智芯传感推出高性能低功耗ZXP2绝压压力传感器
- 菩萨蛮 生如夏花(赵敏)
- 过犹不及,别再在编程中高射炮打蚊子
- 一步一步教你搭建jenkins