SpringBoot应用程序转换成WAR文件详解

 更新时间:2022年11月07日 11:02:28   作者:allway2  
其实一般使用SpringBoot使用打成jar包比较省事的,但也有很多童鞋是习惯使用WAR包的,下面这篇文章主要给大家介绍了关于SpringBoot转换WAR的相关资料,需要的朋友可以参考下

如何在不牺牲嵌入式应用服务器的直接执行能力的情况下,将 JAR Spring 启动应用更改为打包和部署为 WAR。

WAR与JAR

默认情况下,Spring Boot 应用程序打包为带有嵌入式 Tomcat 的可执行 JAR 文件。您可以直接通过命令运行它们。传统的Java Web应用程序需要一个servlet容器(应用程序服务器)来运行。您需要安装、配置此类服务器,然后将应用程序部署到其中。而且您需要为每个环境准备这样的服务器。使用 Spring Boot,这种方法是相反的,因为应用程序服务器直接位于您的 JAR 中。这有很多优点,但有时您可能需要将 Spring Boot 应用程序作为传统的 WAR 来代替。例如,如果你受公司策略的约束,需要部署到提供的应用服务器。java -jar

在这篇文章中,我们将研究如何在不牺牲直接可执行性的情况下将 Spring Boot 应用程序打包为 WAR。

新应用

幸运的是,当您创建新应用程序时,该过程非常简单。您可以使用所有必需的设置和依赖项生成应用程序,而不是自己创建应用程序。有一个名为Spring Initializr的官方工具。

默认情况下,所有高级选项都是隐藏的。您可以只设置基本内容,例如 Spring 版本、语言或构建工具。当然还有所有的依赖关系。

您需要打开“选项”部分以指定打包。

在高级选项部分中,有“打包”选择。默认情况下,有Jar。这意味着您将能够直接运行 JAR,因为它包含一个嵌入式 Tomcat 应用程序服务器。

您不能将 JAR 部署到其他应用程序服务器(Tomcat、Jetty、JBoss 等)以在那里运行它们。他们只适用于战争。为了能够将应用部署到这些应用,需要将打包更改为WAR。

很棒的是,这样的 WAR 仍然可以自行执行,这很有用。例如,它非常适合本地开发,即使您在生产中使用常规应用服务器也是如此。

完成设置后,您可以单击生成项目,系统将下载包含应用的 zip 文件。

创意整合

使用 Spring Initializr 生成应用程序比手动创建应用程序更方便、更不容易出错。仍然有一些不便,因为您需要转到外部网页,下载zip文件并将其解压缩。

幸运的是,您可以直接从 IDE 使用 Spring Initializr。在IntelliJ IDEA中,您可以访问:

File → New Project → Spring Initializr

在这里,您可以像在网络版本中一样指定所有选项,但麻烦更少。

现有应用程序

当您已经将现有的 Spring 引导应用程序打包为 JAR 时,该过程稍微复杂一些,但仍然很简单。您需要手动进行一些更改。

让我们将应用程序转换为 WAR,将哪个 van 部署到应用程序服务器(如 Tomcat),同时仍保持其可执行性。

嵌入式雄猫依赖

为了确保嵌入式 Tomcat 依赖项不会与目标 Tomcat 上已有的内容冲突,您需要将它们标记为提供。

马文

使用 Maven,只需将此依赖项添加到您的文件中即可。pom.xmldependencies

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

格拉德尔

使用 Gradle,过程类似,只需将依赖项添加到具有提供范围的部分即可。dependencies

providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'

SpringBootServletInitializer

现在,您需要确保应用程序以 WAR 的形式正常运行。这就像将以下类添加到应用一样简单。

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(BootWarApplication.class);
    }
}

BootWarApplication.class是应用中批注的类。@SpringBootApplication

如果你愿意,而不是一个单独的类,你可以让你的类扩展类并包含与上面相同的方法。@SpringBootApplicationSpringBootServletInitializerconfigure

更改包装

现在,最后一步是确保您的应用正确打包为 WAR 而不是 JAR。

马文

只需从以下位置更新文件中的打包部分pom.xml

<packaging>jar</packaging>

到WAR包装

<packaging>war</packaging>

格拉德尔

在 Gradle 中,将插件添加到您的插件部分。war

plugins {
    id 'org.springframework.boot' version '2.1.6.RELEASE'
    id 'java'
    id 'war'
}

建立WAR

构建过程保持不变,这里没有变化,只需运行,它将生成您的 WAR。mvn packagegradle build

现在,您可以部署到您选择的应用程序服务器。

运行WAR

这种方法很酷的地方在于,您仍然可以将 WAR 作为带有嵌入式 Tomcat 的可执行文件运行。这样,您可以在不牺牲直接可执行性的情况下进行 WAR 部署。

只需像往常一样运行存档即可。将最后一个参数替换为 WAR 的真实名称。

java -jar demo-1.0.0-SNAPSHOT.war

到此这篇关于SpringBoot应用程序转换成WAR文件详解的文章就介绍到这了,更多相关SpringBoot转换WAR内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis-plus查询源码详解

    mybatis-plus查询源码详解

    这篇文章主要介绍了mybatis-plus查询源码解读,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • springboot接入微信app支付的方法

    springboot接入微信app支付的方法

    本文使用springboot集成微信支付服务,包含微信统一支付订单接口,以及支付回调接口等,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Springboot项目javax.validation使用方法详解

    Springboot项目javax.validation使用方法详解

    这篇文章主要介绍了Springboot项目javax.validation使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • eclipse配置javap命令的方法

    eclipse配置javap命令的方法

    本篇文章主要介绍了如何为eclipse配置javap命令,在配置过程中会出现的小问题的解决方法,非常实用,需要的朋友可以参考下
    2015-07-07
  • springboot vue接口测试HutoolUtil TreeUtil处理树形结构

    springboot vue接口测试HutoolUtil TreeUtil处理树形结构

    这篇文章主要介绍了springboot vue接口测试HutoolUtil TreeUtil处理树形结构,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 非常详细的Java异常处理机制知识整理大全

    非常详细的Java异常处理机制知识整理大全

    Java异常指在程序运行时可能出现的一些错误,比如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误做出处理,下面这篇文章主要给大家介绍了关于Java异常处理机制知识整理的相关资料,需要的朋友可以参考下
    2022-11-11
  • java实现五子棋程序

    java实现五子棋程序

    这篇文章主要为大家详细介绍了java实现五子棋程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • SpringMVC设置全局异常处理器的步骤

    SpringMVC设置全局异常处理器的步骤

    在项目中我们有需求做一个全局异常处理,来规范所有出去的异常信息,这篇文章主要介绍了SpringMVC设置全局异常处理器,需要的朋友可以参考下
    2024-03-03
  • 使用 Spring Boot Admin 监控应用状态的详细过程

    使用 Spring Boot Admin 监控应用状态的详细过程

    这篇文章主要介绍了使用 Spring Boot Admin 监控应用状态,该模块采集应用的内部信息,并暴露给外部的模块,支持 HTTP 和 JMX,并可以与一些第三方监控系统(如 Prometheus)整合,需要的朋友可以参考下
    2022-09-09
  • java精度计算代码 java指定精确小数位

    java精度计算代码 java指定精确小数位

    这篇文章主要为大家详细介绍了java精度计算代码,java指定精确小数位,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02

最新评论