如何在传统的 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/webapp
在 jar 部署中不会被读取为资源文件夹,您有在这种情况下将其添加为资源)。
当您想将 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 部署到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上下文之外的属性文件[重复]
如何读取在 apache tomcat 中运行的 webapp 的清单文件?