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
包放到tomcat
的webapps
目录下,启动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>
最后
-
更多参考精彩博文请看这里:《陈永佳的博客》
-
喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97581.html