1. 首页
  2. 软件开发
  3. JAVA
  4. spring boot在创建项目时选成war / jar包在项目后期应该怎么修改?

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

  • 发布于 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 命令运行。