SpringBoot项目打包成war包

SpringBoot项目打包成war包


前言


今天博主将为大家分享SpringBoot项目打包成war包!不喜勿喷,如有异议欢迎讨论!

以下所写内容均与以前的文章有联系可以前往博文查看,陈永佳的博客

之前的一系列文章讲解了Maven安装以及配置STS(eclipse)配置Maven,如有不会的同学请前往学习,如果喜欢给个点赞关注哦,谢谢支持!


第一步

修改打包形式,如下所示:

pom.xml里设置 <packaging>war</packaging>


第二步

SpringBoot内置的Tomcat在发布时剔除,provided表示该包只在编译和测试中使用,在发布时去除。而在发布时,此依赖由servlet容器即Tomcat提供。,如下所示:

PS:不推荐在spring-boot-starter-web直接将tomcat移除,否则需要添加servlet-api依赖。:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

由于SpringBoot项目没有传统的web.xml文件,因此我们需要在缺少web.xml文件的情况下构建war包,需要添加以下配置。

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
    <!--如果想在没有web.xml文件的情况下构建WAR,请设置为false。-->
    <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

第二步

修改启动类,并重写初始化方法,如下所示:

更改项目启动类,保留之前的启动类,新建类ServletInitializer,继承SpringBootServletInitializer类,重写configure方法,即将启动类交给Servlet容器进行启动,启动类代码如下:

package com;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**
 * 主函数
 * @Description: SpringBoot服务启动类
 * @ClassName: JmccmsApplication.java
 * @author ChenYongJia
 * @Date 2019年05月01日 晚上22:54
 * @Email chen87647213@163.com
 */
@Slf4j
@SpringBootApplication
public class JmccmsApplication {

    /**
     * 项目启动方法
     * @param args
     */
    public static void main(String[] args) {
        log.info("佳梦财宸管理系统开始启动ing!");
        SpringApplication.run(JmccmsApplication.class, args);
        log.info("佳梦财宸管理系统启动成功ing.......!");
    }

}

需要新建的类,代码如下:

package com;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**
 * @Description: 项目构建war包
 * @BelongsProject: EducationPlatform
 * @BelongsPackage: com
 * @Author: ChenYongJia
 * @CreateTime: 2019-11-28 10:31
 * @Email chen87647213@163.com
 */
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(JmccmsApplication.class);
    }

}

打包部署(使用maven package打包项目,拿到war包。s)

在项目根目录下(即包含pom.xml的目录),点击键盘的shift键加上鼠标右键,出现命令窗口,选择powershell命令,然后在命令行里输入: mvn clean package即可, 等待打包完成,出现[INFO] BUILD SUCCESS即为打包成功。

mvn package
java -jar target/(项目名)test-0.0.1-SNAPSHOT.jar

然后把target目录下的war包放到tomcatwebapps目录下,启动tomcat,切记页面中访问controller的路劲要加上项目名,才能正常访问,即可自动解压部署。

PS:如果开发环境使用jdk1.8.0_60,把springboot 项目打成war包后,部署到apache-tomcat-7.0.68时报错如下,换成apache-tomcat-8.0.9即可解决问题!


另外如果项目使用了jsp页面

springboot项目使用jsp页面时会添加以下依赖,但是在外部tomcat运行时会报错因为tomcat/lib下自带的jar包(jasper.jar,jsp-api.jar等)会跟war包项目路径/lib下的解析jsp的jar包冲突
删除项目路径/lib下的相关jar包即可,如下所示:

<!-- 添加jsp支持 -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <version>8.0.33</version>
</dependency>

最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈永佳

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值