最近遇到项目需要上线部署到服务器,需要讲自己的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 就可以直接线上运行了。

最新文章

  1. Freemarker-标签使用
  2. HTML 5 websocket
  3. Apache Spark源码走读之12 -- Hive on Spark运行环境搭建
  4. 编写自己的C头文件
  5. Live555类结构
  6. Deppon接口开发
  7. 高性能迷你React框架anu在低版本IE的实践
  8. 201521123097《Java程序设计》第九周学习总结
  9. 学习AD、DA的体会
  10. 给div&quot;上&quot;滑动条
  11. &lt;自动化测试方案_10&gt;第十章、自动化测试部署策略
  12. python中*args,**kwargs
  13. python爬虫实例
  14. codeforces div2 C题思路训练【C题好难,我好菜】
  15. Scala:Method 小技巧,忽略result type之后的等号
  16. 《转》推荐几个精致的web UI框架
  17. JSON字符串转C#实体Class类
  18. [Groovy] List和Map用法搜集
  19. webservice gsoap 小记
  20. 仿LOL项目开发第九天

热门文章

  1. Actor模型及原理
  2. tomcat部署服务乱码问题
  3. netty 之 telnet HelloWorld 详解
  4. SpringBoot之旅第三篇-日志
  5. 开发小白也毫无压力的hexo静态博客建站全攻略 - 躺坑后亲诉心路历程
  6. 再好好聊聊 HTTP 里的 Cookie | 实用 HTTP
  7. Java秋招面经大合集
  8. KnockOut 绑定之foreach绑定
  9. DateUtil日期工具类
  10. CSS Grid布局,实现响应式设计