如何在传统的 tomcat webapps 文件夹中部署 Spring Boot MVC 应用程序?

Posted

技术标签:

【中文标题】如何在传统的 tomcat webapps 文件夹中部署 Spring Boot MVC 应用程序?【英文标题】:How to deploy a spring boot MVC application in traditional tomcat webapps folder? 【发布时间】:2015-08-25 06:07:19 【问题描述】:

我在 springboot springmvc 和 gradle 示例之后创建了一个简单的 spring mvc 应用程序。

下面是结构。 src/main/java - 这是所有代码库的地方。 src/main/resources - 这是所有资源/模板所在的位置。

导入 org.springframework.boot.SpringApplication; 导入 org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication 公共类应用程序 公共静态无效主要(字符串[]参数) SpringApplication.run(Application.class, args);

只需编写上述类并使用零配置,我就能够启动我的 spring-mvc Web 应用程序(这非常酷)。 (通过命令 gradlew build 和 gradlew bootrun) 但是来自传统的 Web 应用程序开发和部署背景,我想知道如何从中创建一个 war 文件并将其部署到 tomcat webapps 文件夹中。

另外,将所有新资源(如 js 文件、css 等)保存在哪里。我们通常会有一个 WEB-INF 文件夹来保存它们,但是在这里做什么。

【问题讨论】:

见***.com/questions/24741816/… 【参考方案1】:

meskobalazs 在构建 war 部署时回答了您关于资源的问题(但请注意,src/main/webappjar 部署中不会被读取为资源文件夹,您有在这种情况下将其添加为资源)。

当您想将 Spring-Boot 应用程序更改为 Web 部署时,您基本上必须做两件事:

将项目的打包从 jar 转换为 war 将嵌入式tomcat的依赖改为provided

更多详情请见Spring-Boot documentation site

【讨论】:

还有一个更重要的步骤。您还应该验证 war 文件的基本名称是否与 src/main/resource/application.properties 中的 spring server.context-name 匹配。这样,访问 Spring Boot 加载的应用程序与 Tomcat 中的 Web 应用程序时,URL 将是相同的。例如,要从两个部署中查看localhost:post/mycontext,请将“server.context-path=/mycontext”行放在 src/main/resource/application.properties 中,然后将 mycontext-1.0.0.war 部署到 / webapps/mycontext.war【参考方案2】:

Spring Boot 包含 Tomcat 容器。

您必须删除外部 Tomcat 才能部署您的项目

【讨论】:

【参考方案3】:

如果您使用的是Maven项目,则需要修改pom.xml以将包装改为war ,如下

<packaging>war</packaging>

如果你使用的是Gradle项目,你需要修改build.gradle如下

apply plugin: 'war'

一旦你构建项目,它会创建一个war文件,所以你可以很容易地部署在任何tomcat服务器的webapps文件夹中

【讨论】:

以上是关于如何在传统的 tomcat webapps 文件夹中部署 Spring Boot MVC 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Tomcat中读取我的webapp上下文之外的属性文件[重复]

如何在tomcat上运行选择的webapp

如何读取在 apache tomcat 中运行的 webapp 的清单文件?

JavaWeb项目如何部署到tomcat(手工)

Tomcat下webapps夹中root文件夹作用及如何发布项目至root文件夹中

用Eclipse如何加载tomcat服务?