如何在 Eclipse Tomcat 中运行 Spring Boot 应用程序?
Posted
技术标签:
【中文标题】如何在 Eclipse Tomcat 中运行 Spring Boot 应用程序?【英文标题】:How to run spring boot app in Eclipse tomcat? 【发布时间】:2016-04-27 21:41:51 【问题描述】:我有一个 Spring Boot 应用程序,并希望在 Eclipse 中将其作为服务器应用程序运行。 因此该应用程序将被识别为 Tomcat Web 应用程序并且可以添加我更新方面:
当我运行网络应用程序时,找不到我的其余服务。 Spring Boot 应用程序包含与 Spring Boot 发布之前的 Spring Apps 不同的文件夹结构。可以从 Eclipse 配置的 tomcat 运行 Spring Boot 应用程序吗?同样在 spring boot 之前,需要指定应用程序的控制器部分。我是否需要使用这些设置更新我的 Spring Boot 应用才能从 Eclipse tomcat 运行?
我不想创建一个war然后将它复制到tomcat的webapps文件夹中。
更新:在 Eclipse Tomcat 容器中运行此应用程序的原因是我有其他非 Spring Boot 应用程序,我的新 Spring Boot 应用程序将依赖这些应用程序。
【问题讨论】:
运行不需要部署的应用即可。 @M.Deinum 请查看更新 你为什么需要将它部署到 tomcat...如果你想部署到 tomcat,你需要一个战争(这在参考指南中有解释)。 @M. Deinum 使其成为战争将无法从 Eclipse Tomcat 运行应用程序。发动战争只会让应用程序从tomcat独立运行 @M.Deinum 感谢您的指导,我不关心打包应用程序,我只关心在同一个 tomcat Eclipse 容器中运行 spring 和 spring boot 应用程序。如果不对其结构进行重大更改,Eclipse tomcat 将无法将 Spring Boot 应用程序识别为 Web 应用程序。 【参考方案1】:按照这 2 个简单的步骤,一切顺利!
步骤 1. 将 pom.xml 文件中的打包格式更改为 war 而不是 jar。
**<packaging>war</packaging>**
第 2 步。右键单击您的项目,然后执行 Maven -> 更新项目。
执行此步骤后,当您尝试运行项目时,您会发现“在服务器上运行”选项。
【讨论】:
【参考方案2】:简答
使用 gradle 插件:eclipse-wtp
和 war
在Application
中扩展SpringBootServletInitializer
解释:
为了在 tomcat 上运行 Spring Boot 应用程序,通常生成的工件必须是 war
应用程序。
为了让它在 Eclipse 内的 tomcat 上运行,您必须使用 WTP-Project(Web 工具平台,又名动态 Web 模块),使用 eclipse-wtp
gradle 插件。
SpringBootServletInitializer
必须扩展,以便在启动 Tomcat 时启动 Spring Boot 应用程序上下文。
如何创建测试项目
Spring 提供了Getting Started Tutorial 如何使用 Spring Boot 构建 REST Web 服务。我增强了项目以使用 Tomcat 和 Eclipse:
退房
示例项目:
git clone https://github.com/spring-guides/gs-rest-service.git
导入到eclipse中
将complete/
子文件夹导入为 gradle 项目。
更改build.gradle
删除
apply plugin: 'java'
apply plugin: 'eclipse'
添加
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
更改src/main/java/hello/Application.java
添加SpringBootServletInitializer
的扩展名
public class Application extends SpringBootServletInitializer
...
完成后,我可以将示例项目部署到在 eclipse 中配置的 Tomcat 服务器并启动该服务器。网址为:http://localhost:8080/complete/greeting?name=User
查看Complete Sample。
【讨论】:
【参考方案3】:只要在spring boot的主类中添加这个注解即可。
@SpringBootApplication
@Configuration
@ComponentScan(value="packages name to scan")
在pom.xml
文件中添加依赖。
【讨论】:
【参考方案4】:对于那些看不到“部署程序集”选项的人,将以下性质添加到 .project 文件将启用部署程序集选项。
org.eclipse.wst.common.modulecore.ModuleCoreNature
为我的项目定义打包结构后,我可以在 Tomcat 服务器上运行应用程序,而无需手动复制 webapps 目录中的 war 文件。
【讨论】:
【参考方案5】:检查你的 pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
然后检查您的主应用程序类:
@SpringBootApplication
public class Application extends SpringBootServletInitializer
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
return application.sources(Application.class);
public static void main(String[] args)
SpringApplication.run(Application.class, args);
然后配置 Project Facets(就像你已经做过的那样):
动态网页模块 Java javascript然后检查您的部署程序集:
完成!
【讨论】:
这对我帮助很大。太感谢了。但是css、js等静态资源如何在这种情况下使它们可以访问?? 非常感谢,我继承了项目,因此我什至不知道我必须手动将 Maven 依赖项添加到部署程序集 在“部署程序集”下添加“Maven 依赖项”对我有帮助 - 非常感谢!以上是关于如何在 Eclipse Tomcat 中运行 Spring Boot 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
Tomcat攻略之如何在Eclipse中运行,编译,debugger-Tomcat源代码