> For the complete documentation index, see [llms.txt](https://potoyang.gitbook.io/spring-in-action-v5/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://potoyang.gitbook.io/spring-in-action-v5/di-19-zhang-bu-shu-spring/19.1-quan-heng-bu-shu-xuan-xiang.md).

# 19.1 权衡部署选项

您可以通过多种方式构建和运行 Spring Boot 应用程序。附录中介绍了这些方式，包括：

* 使用 Spring Tool Suite 或 IntelliJ IDEA 在 IDE 中运行应用程序
* 使用 Maven springboot:run 或 Gradle bootRun，从命令行运行应用程序
* 使用 Maven 或 Gradle 生成可执行 JAR，然后在命令行或部署在云中运行
* 使用 Maven 或 Gradle 生成 WAR 文件，然后部署到传统 Java 应用服务器中运行

这些选项中的任何一个都适合在开发过程中运行应用程序。但是，当您准备将应用程序部署到生产环境，或其他非开发环境中，应该怎么选择呢？

虽然从 IDE 或通过 Maven 或 Gradle 运行应用程序的方式，不适用于生产环境，但可执行 JAR 文件和传统 Java WAR 文件是适用于生产环境的。 那如何选择是部署 WAR 文件，还是 JAR 文件呢？一般来说，这取决于您是想将应用程序部署到传统 Java 应用服务器还是云平台：

* 部署到 Java 应用服务器—— 如果必须将应用程序部署到 Tomcat、WebSphere、WebLogic 或任何其他传统 Java 应用程序服务器，真的别无选择，只能将应用程序构建为 WAR 文件。
* 部署到云端——如果您计划将应用程序部署到云端，无论是 Cloud Foundry、Amazon Web Services（AWS）、Azure 还是 Google Cloud Platform，或其他云平台，一个可执行的 JAR 文件是最好的选择。即使云平台支持 WAR 文件部署，但 JAR 文件格式比 WAR 格式简单得多，WAR 格式是为应用服务器部署设计的。

在本章中，我们将重点介绍三种部署场景：

* 将 Spring Boot 应用程序作为 WAR 文件部署到 Java 应用程序服务器，比如 Tomcat
* 将 Spring Boot 应用程序作为可执行 JAR 文件推送到 CloudFoundry
* 将 Spring Boot 应用程序打包到 Docker 容器中，以便部署到支持 Docker 的云平台

首先，让我们看看如何把配料服务构建为 WAR 文件，并部署到 Java 应用程序服务器（如 Tomcat）中。
