- 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
。
以下是更改步骤:
-
移除或注释掉maven-war-plugin: 如果你之前配置了maven-war-plugin用于打包WAR,那么应该将其移除或者注释掉,因为对于Spring Boot应用来说,这是不必要的。
Xml<!-- 移除类似以下的配置 --> <!-- <build> <plugins> <plugin> <groupId></groupId> <artifactId>maven-war-plugin</artifactId> <!-- 配置信息... --> </plugin> </plugins> </build> -->
-
确保Spring Boot Maven插件正确配置: 确保你的
Xml文件中包含Spring Boot Maven插件,并且其配置指定为构建可执行JAR包。它通常看起来像这样:
<build> <plugins> <plugin> <groupId></groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
-
检查主类和启动器类: Spring Boot应用的主类应带有
@SpringBootApplication
注解,并且包含一个main
方法。打包成JAR时,Spring Boot Maven插件会自动检测到这个主类并构建一个可以执行的JAR。 -
清理并重新打包: 清理之前构建产生的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`命令运行。