引言
Spring Boot 是一个非常流行的 Java 框架,它简化了基于 Spring 的应用程序的创建和部署过程。虽然 Spring Boot 默认支持将应用程序打包成可执行的 JAR 文件,但在某些情况下,我们可能需要将其打包成 WAR 文件以便部署到传统的 Java 应用服务器(如 Tomcat)。本文将详细介绍如何将 Spring Boot 项目打包成 WAR 文件,并在 Tomcat 上进行部署。
修改 pom.xml
文件
首先,我们需要修改项目的 pom.xml
文件,以便将其配置为生成 WAR 文件。
<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>com.example</groupId>
<artifactId>my-spring-boot-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> <!-- 修改这里 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 其他依赖 -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
排除嵌入式 Tomcat
由于我们要将应用程序部署到外部的 Tomcat 服务器,因此需要排除 Spring Boot 内置的 Tomcat。
代码语言:java复制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;
@SpringBootApplication
public class MySpringBootApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MySpringBootApplication.class).exclude({EmbeddedServletContainerCustomizer.class});
}
}
打包 WAR 文件
在项目根目录下运行以下 Maven 命令来打包 WAR 文件:
代码语言:bash复制mvn clean package
打包完成后,你会在 target
目录下看到生成的 WAR 文件,例如 my-spring-boot-app-1.0-SNAPSHOT.war
。
安装和配置 Tomcat
在将 Spring Boot 项目部署到 Tomcat 之前,你需要确保已经正确安装并配置了 Tomcat 服务器。以下是安装和配置 Tomcat 的步骤:
1. 下载 Tomcat
首先,从 Apache Tomcat 官方网站 下载适合你操作系统的 Tomcat 版本。通常,你需要下载最新的稳定版本。
2. 解压 Tomcat
将下载的 Tomcat 压缩包解压到你选择的目录。例如,在 Linux 或 macOS 上,你可以使用以下命令:
代码语言:bash复制tar -xvzf apache-tomcat-x.y.z.tar.gz -C /path/to/your/directory
在 Windows 上,你可以使用解压缩工具(如 7-Zip)将压缩包解压到指定目录。
Tomcat目录结构:
代码语言:js复制 .
├── bin ##存放启动、关闭tomcat或者其它功能的脚本(.bat文件和.sh文件)
├── BUILDING.txt
├── conf ##存放tomcat配置相关的文件
├── CONTRIBUTING.md
├── lib ##存放Web应用能访问的JAR包
├── LICENSE
├── logs ##存放tomcat日志文件
├── NOTICE
├── README.md
├── RELEASE-NOTES
├── RUNNING.txt
├── temp ##临时文件
├── webapps ##Web应用程序的跟目录
└── work ##用以产生有JSP编译出的Servlet的.java和.class文件
3. 配置环境变量(可选)
为了方便在命令行中使用 Tomcat,你可以配置环境变量。在 Linux 或 macOS 上,编辑 ~/.bashrc
或 ~/.bash_profile
文件,添加以下内容:
export CATALINA_HOME=/path/to/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
在 Windows 上,右键点击“计算机”或“此电脑”,选择“属性”,然后点击“高级系统设置”>“环境变量”。在“系统变量”部分,点击“新建”,添加以下变量:
- 变量名:
CATALINA_HOME
- 变量值:Tomcat 安装目录(例如
C:pathtotomcat
) - 变量名:
PATH
- 变量值:
%PATH%;�TALINA_HOME%bin
4. 启动和停止 Tomcat
现在,你可以使用以下命令启动和停止 Tomcat:
代码语言:bash复制# 启动 Tomcat
startup.sh
# 停止 Tomcat
shutdown.sh
在 Windows 环境下,使用以下命令:
代码语言:cmd复制# 启动 Tomcat
startup.bat
# 停止 Tomcat
shutdown.bat
5. 验证 Tomcat 安装
启动 Tomcat 后,打开浏览器并访问 http://localhost:8080
。如果看到 Tomcat 的欢迎页面,说明安装成功。
6. 配置 Tomcat
Tomcat 的主要配置文件位于 conf
目录下,包括 server.xml
、context.xml
和 web.xml
等。你可以根据需要修改这些文件以满足特定需求。例如,你可以更改端口号、添加虚拟主机或配置 SSL 等。
通过以上步骤,你已经成功安装并配置了 Tomcat 服务器。现在,你可以将 Spring Boot 项目打包成 WAR 文件,并将其部署到 Tomcat 上运行。
部署到 Tomcat
将生成的 WAR 文件复制到 Tomcat 的 webapps
目录下。Tomcat 会自动解压并部署该 WAR 文件。
cp target/my-spring-boot-app-1.0-SNAPSHOT.war /path/to/tomcat/webapps/
启动 Tomcat
启动 Tomcat 服务器。你可以使用以下命令启动 Tomcat(假设 Tomcat 安装在 /path/to/tomcat
目录下):
/path/to/tomcat/bin/startup.sh
或者在 Windows 环境下:
代码语言:cmd复制C:pathtotomcatbinstartup.bat
访问应用程序
启动 Tomcat 后,你可以通过浏览器访问你的 Spring Boot 应用程序。默认情况下,URL 应该是 http://localhost:8080/my-spring-boot-app-1.0-SNAPSHOT/
。
结语
通过以上步骤,你已经成功地将 Spring Boot 项目打包成 WAR 文件,并了解了如何在 Tomcat 上进行部署,希望本文对你有所帮助。