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

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

一,war包改为jar包

要将Spring Boot项目从WAR包类型改为JAR包类型以生成可执行的Spring Boot JAR应用,你需要在文件中进行配置修改。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></groupId>
                <artifactId>maven-war-plugin</artifactId>
                <!-- 配置信息... -->
            </plugin>
        </plugins>
    </build> -->
  2. 确保Spring Boot Maven插件正确配置: 确保你的文件中包含Spring Boot Maven插件,并且其配置指定为构建可执行JAR包。它通常看起来像这样:

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

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

    mvn clean package

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

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

 

Xml

<packaging>jar</packaging>

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

二,jar包改成war包

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

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

   xml

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


 

2. **添加或配置maven-war-plugin**:
   确保`maven-war-plugin`被包含在插件列表中,并正确配置。通常不需要特别复杂的配置,只需基本的结构即可,例如:

xml
 

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

3. **排除嵌入式Servlet容器依赖**:
   默认情况下,Spring Boot会包含一个嵌入式的Servlet容器。若要将其部署到外部容器,通常需要排除内嵌容器的依赖。例如,如果你使用的是Tomcat,则可以这样做:

xml

   <dependency>
       <groupId></groupId>
       <artifactId>spring-boot-starter-web</artifactId>
       <exclusions>
           <exclusion>
               <groupId></groupId>
               <artifactId>spring-boot-starter-tomcat</artifactId>
           </exclusion>
       </exclusions>
   </dependency>

4. **确保主类没有@SpringBootApplication注解**:
   对于部署到外部容器的WAR包,通常不需要带有`@SpringBootApplication`注解的主类包含`main`方法。不过,这并不是强制要求,可以根据具体需求来决定是否保留。

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

mvn clean package

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

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