前言
Spring Boot项目一般都是内嵌tomcat或者jetty服务器运行,很少用war包部署到外部的服务容器,即使放到linux中,一般也是直接启动Application类,但是有些时候我们需要部署到外部的服务器,这对于Spring Boot来说却有点麻烦
下面话不多说了,来一起看看详细的介绍吧。
环境声明:
jdk:1.8
服务器:阿里云,ubuntu 16.04
springBoot:1.5.9.RELEASE
目的
将springBoot 打包到远程服务器的tomcat中。
pom.xml
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>waibao</groupId>
<artifactId>project</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 移除tomcat的支持,改成编译时支持 -->
<dependency> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency> <groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--非严格模式 -->
<dependency> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 配置thymeleaf的非严格模式,需要该依赖-->
<dependency> <groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
<dependency> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency> <groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
<!-- 阿里连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.5</version>
</dependency>
<!-- fastJson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.40</version>
</dependency>
<!-- 热部署-->
<dependency> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>1.5.9.RELEASE</version>
<optional>true</optional>
<scope>true</scope>
</dependency>
</dependencies>
<build>
<finalName>/testweb</finalName>
<plugins>
<plugin> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
|
注意
1、maven 插件不能使用springBoot自带的插件。我使用这个插件报以下错误
|
1
|
Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar (default-jar) on project project: Execution default-jar of goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-jar-plugin:2.6:jar: java.lang.ExceptionInInitializerError: null
|
将maven插件修改为
|
1
2
3
4
5
6
7
8
|
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
|
需要注意的是,因为我没有web.xml。所以多加了
|
1
2
|
<configuration> <failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
|
2、
|
1
2
3
|
<build>
<finalName>xxx</finalName>
</build>
|
finalName 需要与 application.yml 中的 context-path 一致。
3、需要将tomcat的依赖改成编译时
|
1
2
3
4
|
<dependency> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
|
4、springBoot入口类,继承SpringBootServletInitializer 并覆盖
|
1
2
3
|
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MainApplication.class);
}
|
其中 MainApplication.class 是 springBoot的入口类。
打包
到项目的根目录下。如果你是用IDEA,直接到这里输入:
mvn clean package -DskipTests
打包结束后,会在项目的target 文件夹中生成对应的.war 文件
上传
直接将war文件丢到tomcat的webapps下面即可。
目前还未解决的问题:
原本是想直接打成jar包。然后直接启动springBoot。无耐打成Jar包,一直在maven插件部分报错。只能打成war包并上传到tomcat中。
如果有人解决了这个问题,请告诉我下。
这篇文章中,说这是个bug….
https://issues.apache.org/jira/browse/MSITE-724
更新。。。。
问题已经解决。 可以直接将springBoot打包成 Jar,并运行。
原因:
|
1
2
3
4
5
6
|
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
|
springBoot 给的官方例子,用的是这个插件。
Maven会自动下载 2.4 版本及 2.6版本的 maven-jar-plugin。
而,Maven 默认会依赖 2.6版本。。 一开始没注意到项目报的错误是,maven-jar-plugin 2.6jar 不兼容。导致一直找不到错误。。
也就是 2.6版本不兼容。 只要手动将其改成 2.4版本即可。 如下所示:
|
1
2
3
4
5
6
7
8
9
|
<plugins>
<plugin> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins>
|
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对快网idc的支持。
原文链接:https://segmentfault.com/a/1190000012479621
相关文章
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-29 55
-
2025-05-25 31
-
2025-05-25 62
-
如何实现企业服务器的自动化部署和配置管理?有哪些推荐的工具和技术?
2025-05-25 40 -
2025-05-27 44


