【问题标题】:How to run spring boot app in Eclipse tomcat?如何在 Eclipse Tomcat 中运行 Spring Boot 应用程序?
【发布时间】: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 应用程序。

标签: java eclipse spring tomcat spring-boot


【解决方案1】:

按照这 2 个简单的步骤,一切顺利!

步骤 1. 将 pom.xml 文件中的打包格式更改为 war 而不是 jar。

     **<packaging>war</packaging>**

第 2 步。右键单击您的项目,然后执行 Maven -> 更新项目。

执行此步骤后,当您尝试运行项目时,您会发现“在服务器上运行”选项。

【讨论】:

    【解决方案2】:

    简答

    • 使用 gradle 插件:eclipse-wtpwar
    • 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 依赖项”对我有帮助 - 非常感谢!
          猜你喜欢
          • 2019-04-12
          • 2018-05-13
          • 2014-07-03
          • 2021-08-20
          • 2020-06-11
          • 1970-01-01
          • 2018-09-04
          • 2019-03-08
          • 2016-06-20
          相关资源
          最近更新 更多