springboot的war和jar包
本篇和大家分享的是通过maven对springboot中打war包和jar包;war通常来说生成后直接放到tomcat的webapps下面就行,tomcat配置自动解压war,而jar一般通过命令行部署和启动;
首先,来实战怎么生成war包,主要来说可以分为3个步骤:
- 程序入口改造
- 排除springboot内置tomcat
- spring-boot-maven-plugin插件中配置程序入口
程序入口改造,我们需要把springboot的main入口屏蔽掉,然后继承SpringBootServletInitializer,并重写configure方法,具体代码如:
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer { @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WebApplication.class);
} // public static void main(String[] args){
//
// }
}
排除springboot内置tomcat,默认的情况下springboot是集成有内置tomcat,因为war需要发在我们服务器上的tomcat中,内置的tomcat不需要,可以如下在maven中配置屏蔽:
<!--war包-排除内置tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
这里通过scope作用域为provided来排除tomcat包,springboot框架中有包含tomcat包,scope默认的作用于是compile,编译,测试,运行;
spring-boot-maven-plugin插件中配置程序入口,上面我们屏蔽了main入口,但是tomcat还是通过启动类作为入口,因此需要配置下启动mainClass:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--war包-执行程序入口 -->
<configuration>
<mainClass>com.platform.WebApplication</mainClass>
</configuration>
</plugin>
最后,把入口项目的packaging指定成war类型
<packaging>war</packaging>
如上我们准备工作就完成了,下面我们仅仅maven的package打包就行了,生成后如下截图:

war包里面的内容就是META-INF和WEB-INF部分,我们吧war上传到linux上的tomcat的webapps下面,一般配置tomcat都会自动解压war包,我这里之前写了一个api接口,运行成功后正常在浏览器显示:

再来,我们开始打jar包,步骤同样和war差不多,不过是反向的去掉注释的内容:
- 还原main入口(springboot模板生成的main,不做任何修改)
- 去掉排除tomcat的配置(默认就不没有这个配置)
- 使用maven-jar-plugin插件打包,指定程序入口和各种包含|排除项
还原不注释main入口,主要针对刚才打war注释了main入口操作,一般采用springboot模板默认生成就行:
public static void main(String[] args) throws ParseException, Exception {
SpringApplication springApplication = new SpringApplication(WebApplication.class);
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
}
去掉排除tomcat的配置(默认就不没有这个配置),同样这一步也是针对打war添加了排除tomcat的配置,直接删除就行,删除:
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-tomcat</artifactId>-->
<!--<scope>provided</scope>-->
<!--</dependency>-->
使用maven-jar-plugin插件打包,指定程序入口和各种包含|排除项,这里通过jar插件配置一些项,对配置文件和main入口指定:
<!--打jar包-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<!--<addClasspath>true</addClasspath>-->
<!--<classpathPrefix>lib/</classpathPrefix>-->
<!--main入口-->
<mainClass>com.platform.WebApplication</mainClass>
</manifest>
</archive>
<!--包含的配置文件-->
<!--<includes>-->
<!--<include>*.yml</include>-->
<!--<include>*.properties</include>-->
<!--<include>templates/**</include>-->
<!--<include>static/**</include>-->
<!--<include>*.xml</include>-->
<!--</includes>-->
</configuration>
</plugin>
最后,把入口项目的packaging指定成war类型:
<packaging>jar</packaging>
完成以上步骤后,能够看到成功的jar包,如图:

最后在linux上通过java -jar web-0.0.01.SN...jar 启动即可。
springboot的war和jar包的更多相关文章
- SpringBoot快速引入第三方jar包
工作中,我们常会用到第三方jar包,而这些jar包往往在maven仓库是搜不到的,下面推荐一种简单.快速的引入第三方依赖的方法: 比如第三方jar包在lib文件夹下,对pom.xml的配置如下: &l ...
- war,jar包是啥
http://www.blogjava.net/athrunwang/archive/2011/11/18/364191.html 经常听开发说war,jar,car,这些是个什么东东呢? .jar ...
- maven将自己的springboot项目打包成jar包后,作为工具包引入其他项目,找不到jar中的类
将springboot项目打包成jar包,作为工具包导入项目后,找不到jar中的类. 原因是:springboot项目使用了自动的打包插件. 原先的插件配置: <build> <pl ...
- idea打包SpringBoot项目打包成jar包和war
- 打包成jar包 1. <groupId>com.squpt.springboot</groupId> <artifactId>springbootdemo< ...
- gradle结合spring-boot生成可运行jar包,并打印日志
1.用gradle把springboot项目打包成jar 1.1 build.gradle 中添加 buildscript { repositories { mavenLocal() maven { ...
- springboot解决第三方依赖jar包的问题
公司现在用的是springboot+maven,想要把一些老的项目都改成这种框架.但是一些老的项目中有好多第三方的jar包或者是自己的jar包,maven库上没有.最初的解决方案是一个个的deploy ...
- springboot 打包插件去除jar包瘦身
1.pom文件配置 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>s ...
- springboot通过idea打jar包
springboot打jar包 一. 检查pom文件 <packaging>jar</packaging> 二. 切换到maven窗口 三. 先c ...
- SpringBoot第一次案例(以及jar包的生成)
一.Springboot简介 Springboot框架就用于简化Spring应用的开发,约定大于配置,去繁从简.从以往的“Spring全家桶时代”正式过渡到”Spring boot,J2EE一站式解决 ...
随机推荐
- ubuntu16.04开机循环输入密码无法进入桌面的解决办法
前些天碰到一个头疼的问题,启动我的ubuntu之后,输入密码闪屏一下,又需要输入密码!!!于是再输还要再输!!!!! 经过百度一翻后终于找到原因和解决办法. 原来是我之前在profile文件里配置了一 ...
- 面试时怎样回答:你对原生ajax的理解
很多人跟我一样用习惯了jq封装好的$.ajax,但是面试时,原生ajax是很多面试官喜欢问的问题,今天再查资料,打算好好整理一下自己理解的原生ajax. 首先,jq的ajax:一般我常用的参数就是这些 ...
- golang 并发模式笔记
1.并发并不是并行,前者是优先对时间片的抢占,后者是真多核. go中多线程时直接要求并行的方法是: 亦不可滥用,CPU密集型,并发度很高的场景适用. 2.go起的协程 3. function that ...
- B20J_2836_魔法树_树链剖分+线段树
B20J_2836_魔法树_树链剖分+线段树 题意: 果树共有N个节点,其中节点0是根节点,每个节点u的父亲记为fa[u].初始时,这个果树的每个节点上都没有果子(即0个果子). Add u v d ...
- 【源码安装】Heartbeat3.0.9
1.概述1.1 关于Heartbeat1.2 本篇博客实践环境2. 部署基础环境2.1 通过YUM安装依赖环境2.2 创建Heartbeat用户和组3. 编译安装3.1下载源码包3.2 编译安装3.2 ...
- 显著性检测(saliency detection)评价指标之sAUC(shuffled AUC)的Matlab代码实现
AUC_shuffled.m function [score,tp,fp] = AUC_shuffled(saliencyMap, fixationMap, otherMap, Nsplits, st ...
- web版仿微信聊天界面|h5仿微信电脑端案例开发
前几天开发了一款手机端h5仿微信聊天,人唯有不停学习才能进步,这段时间倒腾着整理了下之前项目,又重新在原先的那版基础上开发了一款仿微信聊天电脑端web版本,聊天页面又重新优化了多图预览.视频播放,右键 ...
- appium---【已解决】【Mac】from appium import webdriver报错提示“Unresolved import webdriver”
报错提示: from appium import webdriver提示Unresolved import webdriver 报错原因:没有安装Appium_Python_Client 解决办法: ...
- 移动通信最先进的音频编解码器EVS及用好要做的工作
语音通信从最初的只有有线通信变成后来的有线通信与无线通信(移动通信)的竞争,当移动语音通信价格下来后有线语音通信明显处于逆势.如今移动语音通信的竞争对手是OTT(On The Top)语音,OTT语音 ...
- 启动链码报rpc error: code = Unimplemented desc = unknown service protos.ChaincodeSupport start error
参考链接:https://stackoverflow.com/questions/48007519/unimplemented-desc-unknown-service-protos-chaincod ...