在 Eclipse 中从 Spring:boot 项目创建 war 文件

Create war file from Spring:boot project in Eclipse

我是 Spring Boot 的新手,我已经完成了一个在我的本地主机上运行良好的应用程序。正如我被告知要将它部署在我的本地主机之外,例如 webbhotel 或 simular 我需要将项目导出为 war 文件而不是 jar 文件。

更新!! 我 运行 项目作为 Spring 在 Spring Initialzr 中生成并使用 Eclipse 作为 IDE.

的项目

在 Eclipse 中,我遵循了这些步骤

<packaging>war</packaging>

<dependencies>
    <!-- … -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- … -->
</dependencies>

来自 Spring 引导参考页面 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file

在我的项目中我使用

<dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

我是否需要添加 sprinng-boot-starter-tomcat 依赖项并添加 provided on 以及 tomcat-embed-jasper 以便我的依赖项像这样?

<dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
     <dependency>
    <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

当我尝试在 Eclipse 中导出到 war 文件时,Eclipse 找不到我的项目。如果我尝试导出 Java>JAR FILE 它可以找到它,但如果我尝试导出 Web>WAR FILE

则找不到

有谁知道我做错了什么以及是否需要导出到 WAR 文件以部署到外部服务器?

您需要在您的@SpringBootApplication 中扩展 ****SpringBootServletInitializer****

您不需要为 war 文件生成添加 ****sprinng-boot-starter-tomcat**** 依赖项

在pom.xml

中使用以下配置
<packaging>war</packaging>

为您的项目配置构建路径 select JDK

右键单击项目 > 运行 As > Maven Install

它将在目标文件夹中生成 war 文件。

复制此 war 并部署到任何 web/application 服务器(我已将其重命名为 demo.war)。

您可以使用您的主机名后跟端口和应用程序名称来访问该应用程序。

要在 STS(Spring 工具套件)中生成 WAR 文件: 运行 作为-> Maven 安装

如果您想将 spring 引导项目部署为 war 文件,您需要执行三个步骤:

  1. 扩展 SpringBootServletInitializer

    @SpringBootApplication
    public class DemoApplication extends SpringBootServletInitializer {
    
    public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
    }
    
    
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(DemoApplication.class);
    }
    }
    

    如果你使用多个主class然后定义启动一个

    <start-class>com.javavogue.DemoApplication</start-class>
    
    1. 将包装更新为 war pom.xml

       packaging war packaging
      
    2. 将嵌入式 servlet 容器标记为已提供。在 pom 文件中。

      参考:Deploy a Spring Boot WAR to Tomcat Server

pom.xml 中更改为 <packaging>war</packaging> 后。

使用命令:mvn package

您也可以通过选择菜单继续File -> Export -> Web -> War file

我通过以下步骤生成了一个 war 文件:

  1. 添加以上依赖。
  2. 打开命令提示符。
  3. cd 进入你的项目目录。
  4. 运行 命令:mvn clean install.

然后目标目录下会生成一个war文件

如果你使用的是maven,你可以添加标签来指定我们要创建的类型——jar或者war。之后,在 sts 中触发 Maven 构建并指定目标 - 全新安装并指定要 运行 构建的线程数。如果你想跳过测试用例,你可以给 skipTest =true,或者如果你从命令提示符到 运行,你可以给 -Dmaven.test.skip=true。 完成后,将在目标文件夹下生成 war 文件。 (除非我们指定特定的部署文件夹)