锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. JAVA
  4. spring boot在创建项目时选成war / jar包在项目后期应该怎么修改?

spring boot在创建项目时选成war / jar包在项目后期应该怎么修改?

0
  • JAVA
  • 发布于 2024-08-14
  • 0 次阅读
黄健
黄健

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

  • jar 包里面装有 tomcat,可以独立运行,当项目部署到 nginx 时需要 jar 包(nginx 进行端口转发)
  • war 包无 tomcat,不能独立运行,当项目部署到 tomcat 时可以用 war 包

一,war 包改为 jar 包

要将 Spring Boot 项目从 WAR 包类型改为 JAR 包类型以生成可执行的 Spring Boot JAR 应用,你需要在pom.xml文件中进行配置修改。Spring Boot 默认支持 JAR 格式部署,但如果你之前选择了 WAR 包部署方式,可能是因为配置了与 WAR 打包相关的 Maven 插件(如 maven-war-plugin)或者是 Spring Boot Maven 插件的 packaging 属性设置为了war。

以下是更改步骤:

  1. 移除或注释掉 maven-war-plugin: 如果你之前配置了 maven-war-plugin 用于打包 WAR,那么应该将其移除或者注释掉,因为对于 Spring Boot 应用来说,这是不必要的。

    Xml

    <!-- 移除类似以下的配置 -->
    <!-- <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <!-- 配置信息... -->
            </plugin>
        </plugins>
    </build> -->
    
  2. 确保 Spring Boot Maven 插件正确配置: 确保你的pom.xml文件中包含 Spring Boot Maven 插件,并且其配置指定为构建可执行 JAR 包。它通常看起来像这样:

    Xml

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    
  3. 检查主类和启动器类: Spring Boot 应用的主类应带有@SpringBootApplication注解,并且包含一个main方法。打包成 JAR 时,Spring Boot Maven 插件会自动检测到这个主类并构建一个可以执行的 JAR。

  4. 清理并重新打包: 清理之前构建产生的 WAR 相关文件,然后重新打包:

       <project>
         <packaging>war</packaging>
       </project>
    

    运行上述命令后,Maven 会在target目录下生成一个名为your-app-name.jar的文件,你可以通过java -jar your-app-name.jar命令来运行这个应用程序。

如果在packaging元素中指定了war,也需要更改为jar:

Xml

   <build>
       <plugins>
           <!-- 使用 WAR 插件来打包为 war 文件 -->
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-war-plugin</artifactId>
               <version>3.3.2</version> <!-- 使用最新的稳定版本 -->
           </plugin>
       </plugins>
   </build>

但这通常不是必需的,因为 Spring Boot 项目默认就是 jar 包形式。以上步骤完成后,你的 Spring Boot 项目就会被打包成一个独立运行的 JAR 文件。

二,jar 包改成 war 包

如果你想将 Spring Boot 项目从 JAR 包类型改为 WAR 包类型,并部署到传统的 Servlet 容器(如 Tomcat)中,你需要做以下调整:

  1. ** 更新 pom.xml 中的 packaging 类型 **:
    在 pom.xml 的根节点下,将 packaging 元素改为 war:

   xml

   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
       <exclusions>
           <exclusion>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-tomcat</artifactId>
           </exclusion>
       </exclusions>
   </dependency>
  1. ** 添加或配置 maven-war-plugin**:
    确保 maven-war-plugin 被包含在插件列表中,并正确配置。通常不需要特别复杂的配置,只需基本的结构即可,例如:

xml

   <build>
       <plugins>
           <!-- 使用 WAR 插件来打包为 war 文件 -->
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-war-plugin</artifactId>
               <version>3.3.2</version> <!-- 使用最新的稳定版本 -->
           </plugin>
       </plugins>
   </build>
  1. ** 排除嵌入式 Servlet 容器依赖 **:
    默认情况下,Spring Boot 会包含一个嵌入式的 Servlet 容器。若要将其部署到外部容器,通常需要排除内嵌容器的依赖。例如,如果你使用的是 Tomcat,则可以这样做:

xml

   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
       <exclusions>
           <exclusion>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-tomcat</artifactId>
           </exclusion>
       </exclusions>
   </dependency>
  1. ** 确保主类没有 @SpringBootApplication 注解 **:
    对于部署到外部容器的 WAR 包,通常不需要带有 @SpringBootApplication 注解的主类包含 main 方法。不过,这并不是强制要求,可以根据具体需求来决定是否保留。

  2. ** 构建项目 **:
    执行构建命令:

mvn clean package

   这将会生成一个 .war 文件在 target 目录下,可以直接部署到你的 Servlet 容器中。

注意:转换为 WAR 包后,你需要在 Servlet 容器中配置并部署此 WAR 文件,而不是直接通过 java -jar 命令运行。

标签: #软件开发 1171 #JAVA 991
相关文章

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

SpringBoot整合异步任务执行 2024-10-08 11:24

同步任务: 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等 并发问题 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢,影响用 户体验 异步任务: 异步任务是在多线程中同时执行,多个任务可以并发执行,同时处理多个请求,响应快,资源

springboot kafka多数据源,通过配置动态加载发送者和消费者 2024-10-08 11:24

前言 最近做项目,需要支持kafka多数据源,实际上我们也可以通过代码固定写死多套kafka集群逻辑,但是如果需要不修改代码扩展呢,因为kafka本身不处理额外逻辑,只是起到削峰,和数据的传递,那么就需要对架构做一定的设计了。 准备test kafka本身非常容易上手,如果我们需要单元测试,引入ja

SpringBoot 集成 Redis 2024-10-08 11:24

一:SpringBoot 集成 Redis ①Redis是一个 NoSQL(not only)数据库, 常作用缓存 Cache 使用。 ②Redis是一个中间件、是一个独立的服务器;常用的数据类型: string , hash ,set ,zset , list ③通过Redis客户端可以使用多种语

SpringBoot整合QQ邮箱 2024-10-08 11:24

SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件…. 下面按步骤进行: 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,如果当前账号未开启的话自己手动开启。

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.