spring boot tomcat 部署
前几天springboot项目部署到linux中,整个过程就是个坑啊。踩坑的过程中也学到了许多。spring boot 项目部署时由于其内置了tomcat和jdk,而且还都是8。 所以部署的话就分为两种部署了, 第一种就是使用其内置的tomcat部署, 第二种就是采用外部的tomcat部署。采用内部的tomcat部署又分为两种: 第一种是打包成war包部署,第二种事打包成jar包部署。 两者区别就在于打包成jar包的是无静态资源的,如jsp,HTML等,像只是提供restful接口。
阅读此篇博客请先去阅读本人的spring boot 常用注解
除了必要的jar,插件外还需导入 spring-boot-maven-plugin 插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.6.RELEASE</version>
<configuration>
<!-- 指定该Main Class为全局的唯一入口 -->
<mainClass>com.spSystem.App</mainClass>
</configuration>
<executions>
<execution>
<goals>
<!--可以把依赖的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
采用外置tomcat部署时要注意:
1. 依赖jar包的冲突
由于spring boot 内置了tomcat,jdk,servlet等,所以部署到外部tomcat中时要将其内置的tomcat,servlet等设置为只在编译和测试时使用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 去除Spring Boot自带的Tomcat插件 -->
<scope>provided</scope>
</dependency> <!-- 配置低版本Tomcat,否则需8.5以上版本,请根据自己的Tomcat版本配置 -->
<properties>
<tomcat.version>7.0.77</tomcat.version>
</properties>
2. 程序主入口是什么
项目中内置了servlet,程序的主入口原先是main方法,使用main方法自启动。 所以我们要将其重写
@SpringBootApplication
public class SpringBootTest extends SpringBootServletInitializer { public static void main(String[] args) {
SpringApplication.run(SpringBootTest.class, args);
} @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringBootTest.class);
} }
3.导入相应jar包的maven依赖时其相对应的版本
由于spring boot与jdk,spring cloud 都有相对应的版本,所以导入jar包maven依赖时要配对好。 spring boot 2.0及以上的对应jdk1.8, spring cloud Finchley 版。 jdk 1.7 对应的是 spring boot 1.5 (1.0版)

4. 部署到tomcat后程序的访问路径
本地中启动项目访问是没有项目名的,但部署上去后。访问路径要加上项目名了(如:http://IP:端口/项目名/路由)
采用内置tomcat 部署 :
导出jar 包(同maven 导 jar 包,导war 包相同)采用内置tomcat 部署 将jar 包放入linux 中的一个目录, 然后进入其所在目录,执行
# spSystem.jar: jar包
# springboot.log: 执行命令后所生成的项目运行log(命令执行完,查看此log看看项目是否启动成功)
# &1 &:将此项目设置为守护进程,要不然黑窗口一关项目也就停止了
nohup java -jar spSystem.jar >springboot.log 2>&1 &
采用内置tomcat部署时要注意:同上 1, 3
当采用内置tomcat 部署时 没有导入 spring-boot-maven-plugin 插件 maven依赖 或者 没有在依赖中指定程序的主入口 都会报 no main in xx.jar
当注意1的时候, 就是与采用外部tomcat 部署相反了,把<scope>provided</scope>注释掉,或者把tomcat等的maven 依赖注释去除
当注意3 的时候, 就会报XXXXX 52 版本冲突
关闭程序,杀死进程就可以了
在此,希望此篇博客能帮助到一些人。有不足之处,有问题的话可以博客上Q我,看到就会回复
spring boot tomcat 部署的更多相关文章
- 多个Spring Boot项目部署在一个Tomcat容器无法启动
转自https://www.cnblogs.com/tomxin7/p/9434085.html 业务介绍 最近用Spring Boot开发了一个翻译的小项目,但是服务器上还跑着其他项目,包括一个同样 ...
- 玩转spring boot——war部署
前言 之前部署spring boot应用是通过直接输入命令“java -jar”来实现的.而有些情况,由于部署环境的制约,只能把项目从jar转换成war才能部署,如新浪云sae的java环境容器.那怎 ...
- Spring Boot打包部署
date: 2018-11-19 15:30:11 updated: 2018-11-21 08:28:37 Spring Boot打包部署 第一种方式 打包成jar包部署在服务器上 1.1 添加插件 ...
- Spring Boot 系列(六)web开发-Spring Boot 热部署
Spring Boot 热部署 实际开发中,修改某个页面数据或逻辑功能都需要重启应用.这无形中降低了开发效率,所以使用热部署是十分必要的. 什么是热部署? 应用启动后会把编译好的Class文件加载的虚 ...
- spring boot: 热部署spring-boot-devtools
spring boot: 热部署spring-boot-devtools 1引入spring-boot-devtools依赖包 <!-- spring boot devtools 热部署 --& ...
- spring boot: 热部署(一) run as – java application (spring-loader-1.2.4.RELEASE.jar)
spring boot: 热部署(一) run as – java application (spring-loader-1.2.4.RELEASE.jar) 如果使用的run as – java a ...
- 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行
实操:将一个spring boot项目部署到docker容器里运行 实验需要的环境: 腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud 第 ...
- Spring Boot 热部署(转)
Spring Boot 热部署 实际开发中,修改某个页面数据或逻辑功能都需要重启应用.这无形中降低了开发效率,所以使用热部署是十分必要的. 什么是热部署? 应用启动后会把编译好的Class文件加载的虚 ...
- Spring Boot热部署插件
在实际开发中,我们修改某些代码逻辑功能或页面都需要重启应用,这无形中降低了开发效率,热部署是指当我们修改代码后,服务能自动重启加载新修改的内容,而不需要重启应用,这样大大提高了我们开发的效率. Spr ...
随机推荐
- Spring Boot 2.x基础教程:使用国产数据库连接池Druid
上一节,我们介绍了Spring Boot在JDBC模块中自动化配置使用的默认数据源HikariCP.接下来这一节,我们将介绍另外一个被广泛应用的开源数据源:Druid. Druid是由阿里巴巴数据库事 ...
- 《快乐编程大本营》java语言训练班 3课:java的运算符
第1节. 算术运算符 第2节. 递增和递减运算符 第3节. 比较运算符 第4节. 逻辑运算符 第5节. 运算符优先级 第6节. 字符串运算 http://code6g.com/pxphp/px/ban ...
- ros之参数的使用与编程方法
参数模型 ROS Master (Parameter Server) /robot_name: "my_robot" ----{Node A Node B} /r ...
- QQ IP 地址查询相关
1.QQwry.dat格式分析和查询IP位置的PHP程序 以前的追捕数据库太大,而且很久没有更新了. 所以我想到利用QQwry.dat这个文件查询IP所在位置,QQwry.dat 在很多地方都能找到, ...
- Django模型中的admin后台管理无法显示字段
在执行django后台管理时,登陆到http://127.0.0.1:8000/admin/,进入页面后没有对应的字段显示.请解决? 代码: models.py from django.db impo ...
- js dom一些操作,记录一下自己写的没有意义,可以简略翻过 第八章
第八章,一些dom操作,和几个常用的函数 var s= document.getElementById("new"); console.log(s.length); var a= ...
- Qt中字符串和数值之间的转换
来自<Qt5.9 C++开发指南> 普通数值和字符串之间的转换 一.从字符串转换为数值 QString类从字符串转换为整数的函数有: int QString::toInt(bool *ok ...
- 动手学习pytorch——(3)多层感知机
多层感知机(multi perceptron,MLP).对于普通的含隐藏层的感知机,由于其全连接层只是对数据做了仿射变换,而多个仿射变换的叠加仍然是一个仿射变换,即使添加更多的隐藏层,这种设计也只能与 ...
- 《Head first设计模式》之迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 爆炸性新闻:对象村餐厅和对象村煎饼屋合并了! 真是个好消息!现在我们可以在同一个地方,享用煎饼屋美味的煎饼早餐,和好吃 ...
- oneweb and starlink
2019.7.16,一网在首尔开展在轨测试,最高速度400Mbps,延时32ms:地面终端由韩国Intellian生产. https://www.oneweb.world/media-center/o ...