本篇和大家分享的是通过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包的更多相关文章

  1. SpringBoot快速引入第三方jar包

    工作中,我们常会用到第三方jar包,而这些jar包往往在maven仓库是搜不到的,下面推荐一种简单.快速的引入第三方依赖的方法: 比如第三方jar包在lib文件夹下,对pom.xml的配置如下: &l ...

  2. war,jar包是啥

    http://www.blogjava.net/athrunwang/archive/2011/11/18/364191.html 经常听开发说war,jar,car,这些是个什么东东呢? .jar  ...

  3. maven将自己的springboot项目打包成jar包后,作为工具包引入其他项目,找不到jar中的类

    将springboot项目打包成jar包,作为工具包导入项目后,找不到jar中的类. 原因是:springboot项目使用了自动的打包插件. 原先的插件配置: <build> <pl ...

  4. idea打包SpringBoot项目打包成jar包和war

    - 打包成jar包 1. <groupId>com.squpt.springboot</groupId> <artifactId>springbootdemo< ...

  5. gradle结合spring-boot生成可运行jar包,并打印日志

    1.用gradle把springboot项目打包成jar 1.1 build.gradle 中添加 buildscript { repositories { mavenLocal() maven { ...

  6. springboot解决第三方依赖jar包的问题

    公司现在用的是springboot+maven,想要把一些老的项目都改成这种框架.但是一些老的项目中有好多第三方的jar包或者是自己的jar包,maven库上没有.最初的解决方案是一个个的deploy ...

  7. springboot 打包插件去除jar包瘦身

    1.pom文件配置 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>s ...

  8. springboot通过idea打jar包

    springboot打jar包 一.      检查pom文件 <packaging>jar</packaging> 二.      切换到maven窗口 三.      先c ...

  9. SpringBoot第一次案例(以及jar包的生成)

    一.Springboot简介 Springboot框架就用于简化Spring应用的开发,约定大于配置,去繁从简.从以往的“Spring全家桶时代”正式过渡到”Spring boot,J2EE一站式解决 ...

随机推荐

  1. 10.app后端选择什么开发语言

    在qq上,经常看到有创业团队的创始人一直都招不到技术人员,除了项目的因素外,很大的原因就是所需要掌握的开发语言偏门.通过阅读本文,详细了解选择开发语言的核心原则,使各位心里对开发语言的选择更加有数. ...

  2. python获取操作系统平台、版本及架构

    platform模块提供了底层系统平台的相关信息 系统架构 32位还是64位 >>>import platform >>> platform.architectur ...

  3. centos7 更新Firefox版本

    1.用你本地的旧版 firefox,访问http://www.firefox.com.cn,下载Linux版本的Firefox,因为我的是64位故选择的安装包是:"Firefox-lates ...

  4. java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE9\x9B\xB7' for column 'content' at row 1

    这个问题主要是由于该字段及腹肌编码不正确导致的,一般新建的表如果没设置就会是latin1字符集需要将表改为utf8字符集,再将报错的列的字符集改为utf8即可,修改命令如下所示: ALTER TABL ...

  5. kv.go

    package clientv3 import (     pb "github.com/coreos/etcd/etcdserver/etcdserverpb" //protob ...

  6. 在linux服务器之间复制文件和目录命令scp

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  7. python 库位置

    l\\Programs\\Python\\Python36\\lib   默认库安装路径 \\Programs\\Python\\Python36\\lib\\site-packages 第三方库安装 ...

  8. Docker系列之swarm集群搭建

    学习Docker很久了,今天分享一下Docker的swarm集群的搭建过程很简单 首先第一步是 每台机器上面都要安装docker 本人使用的是centos7操作系统,使用3太虚拟机,3太虚拟机必须网络 ...

  9. python脚本对 mysql数据库进行增删改查操作

    # -*- coding: utf-8 -*-import pymysqlimport xlrd# import codecsconn = pymysql.connect(host='127.0.0. ...

  10. qtchooser

    qtchooser 的配置目录: /usr/lib/x86_64-linux-gnu/qtchooser qtchooser 的真实配置目录: /usr/share/qtchooser qtchoos ...