SpringBoot打包项目成war包,并部署到服务器的tomcat上
最近遇到项目需要上线部署到服务器,需要讲自己的SpringBoot项目打包成war包,部署到tomcat上。
下面记录下打包部署的过程。
(1) 将SpringBoot项目打包成war包,
一、修改打包形式
在pom.xml里设置
<packaging>war</packaging>
二、移除嵌入式tomcat插件
在pom.xml里找到
spring-boot-starter-web依赖节点,在其中添加如下代码,
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
三、添加servlet-api的依赖
下面两种方式都可以,任选其一
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.0.36</version>
<scope>provided</scope>
</dependency>
四、修改启动类,并重写初始化方法
我们平常用main方法启动的方式,都有一个App的启动类,代码如下:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我们需要类似于web.xml的配置方式来启动spring上下文了,在Application类的同级添加一个SpringBootStartApplication类,其代码如下:
/**
* 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
*/
public class SpringBootStartApplication extends SpringBootServletInitializer { @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(Application.class);
}
}
两者其实也可以配置到同一个类中,集中写到Application也是可以的
五、打包部署
在项目根目录下(即包含pom.xml的目录),在命令行里输入
[或者在idea工具的Terminal命令行输入也可以]:
mvn clean package -Dmaven.test.skip=true即可, 等待打包完成,出现
[INFO] BUILD SUCCESS即为打包成功。
六 为war包命令
可以在pom.xml的build节点下,新建finalName节点命名
<build>
<finalName>firstProject</finalName>
</build> (2)将war包部署到服务器的tomcat上 首先找一个地方新建一个文件夹,这里演示用D:\project\first
然后将war包放到这个文件夹下
接着打开tomcat的conf文件夹下的server.xml文件
将其中Host配置部分修改成如下格式<Host name="masterqm.zhanbutang.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="/search" docBase="D:\project\search\searchProject.war" debug="0" reloadable="true"/>
</Host>
其中name是公司的域名, path是要附加在url后面的项目名,docBase是项目放置的位置,如果是war包,则要加war后缀名,
配置好了以后,重启tomcat 就可以直接线上运行了。
SpringBoot打包项目成war包,并部署到服务器的tomcat上的更多相关文章
- 打包项目成war包并部署到服务器上,项目运行一直显示加载中
查看服务器上的Tomcat路径下的log 显示 org.apache.catalina.LifecycleException: Failed to initialize component [Conn ...
- IDEA中将工程打包成war包及部署到Tomcat流程
工程打包成war包及部署到Tomcat流程 再IDEA开发工具中,将工程打包成war包流程: 父pom里需要移除内置的tomcat <dependency> <groupId> ...
- Springboot项目打成war包,部署到tomcat上,正常启动访问报错404
前言: 项目介绍,此项目是一个Maven多模块项目,模块项目:all(父模块):util (公用的工具类):dao(实体类.业务类.mapper.mapper.xml):business(业务serv ...
- SpringBoot webmvc项目导出war包并在外部tomcat运行产生的诸多问题以及解决方案
背景: 有需求要将原来的Spring(3.2.6) + Springmvc + Hibernate项目重构为Springboot(1.5.2)项目 描述: 记录重构过程,以及期间遇到的种种问题和对应的 ...
- Linux下打包压缩成war包和解压war包
一. 打包成war包 因为种种原因公司需要把java程序达成war包.起先用zip命令打包,起先可以用,后来却无法使用.今天找到一个更好的办法.用jar命令,前提是要安装jdk. 把当前目录下的所有文 ...
- SpringBoot 打包成war包,部署到tomcat
使用maven创建的springboot项目,默认是jar包,springboot还有自己带的tomcat.现在需要将项目打包,并部署到服务器tomcat下面. 1.修改pom.xml文件.将jar修 ...
- Intellij IDEA社区版打包Maven项目成war包,并部署到tomcat上
转自:https://blog.csdn.net/yums467/article/details/51660683 需求分析 我们利用 Intellij idea社区版IDE开发了一个maven的sp ...
- springboot将项目打成war包
1. 将项目的打包方式改为war包 <groupId>com.cc</groupId> <artifactId>aaaaaa</artifactId> ...
- intellij idea2020将javaWeb项目打成war包并部署到阿里云服务器遇到java.lang. UnsupportedClass VersionError问题(已解决)
首先将javaweb项目打包成war文件(有关如何打包参考 https://jingyan.baidu.com/article/20b68a88642829386cec62f7.html.https: ...
随机推荐
- Redis+Restful 构造序列号和压力测试【后续】
大家还记上篇博文https://www.cnblogs.com/itshare/p/8643508.html,测试redis构造流水号的tps是600多/1s. 这个速度显然不能体现redis 集群在 ...
- TensorFlow TensorBoard使用
摘要: 1.代码例子 2.主要功能内容: 1.代码例子 <TensorFlow实战>使用MLP处理Mnist数据集并TensorBoard上显示 2.主要功能 执行TensorBoard程 ...
- 讲解:为什么重写equals时必须重写hashCode方法
一 :string类型的==和equals的区别: 结论:"=="是判断两个字符串的内存地址是否相等,equals是比较两个字符串的值是否相等,具体就不做扩展了,有兴趣的同学可以去 ...
- TreeSet集合解析
TreeSet是实现Set接口的实现类.所以它存储的值是唯一的,同时也可以对存储的值进行排序,排序用的是二叉树原理.所以要理解这个类,必须先简单理解一下什么是二叉树. 二叉树原理简析 假如有这么一个集 ...
- Docker最全教程之使用TeamCity来完成内部CI、CD流程(十六)
本篇教程主要讲解基于容器服务搭建TeamCity服务,并且完成内部项目的CI流程配置.教程中也分享了一个简单的CI.CD流程,仅作探讨.不过由于篇幅有限,完整的DevOps,我们后续独立探讨. 为了降 ...
- 在MySQL中实现Rank高级排名函数【转】
MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...
- Dynamics 365中自定义工作流活动更新了输入输出参数后获取的方法
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复245或者20170309可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- Windows Server 2016-Hyper-V网络虚拟化概述
在 Windows Server 2016 和虚拟机管理器中,Microsoft 提供的端到端网络虚拟化解决方案. 有构成了 Microsoft 的网络虚拟化解决方案的五个主要组件: Windows ...
- 【English EMail】2019 Q2 Public Holiday Announcement
Hi all, According to 2019 public holiday announcement released by Chinese government, this is to ann ...
- Use Wait & Notify to Implement Two Threads Run Alternatively
public class ThreadCommunication { public static void main(String[] args) { Business business = new ...
