SpringBoot实现war包和jar的兼容package

    技术2025-06-11  25

     

    springboot进行war包的package操作参考:

    https://blog.csdn.net/zhangcongyi420/article/details/100065407

    1、添加servlet依赖

    <!--添加servlet-api的依赖,用来打war包 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency>

    2、添加tomcat依赖

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

    3、保留改造前和改造后的启动类,分别命名为MainApp和MainWebApp:

    @SpringBootApplication public class MainApp { public static void main(String[] args) { SpringApplication.run(MainApp.class,args); } } @SpringBootApplication public class MainWebApp extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MainApp.class,args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MainApp.class); } }

    4、pom中添加maven编译插件,并指定启动类(使用变量进行动态选择启动类):

    <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>${main.class}</mainClass> </configuration> </plugin> </plugins> </build>

    5、添加pom中的变量

    <profiles> <!-- 定义了多种属性文件,在指定的id下,选择性使用指定属性文件下定义的属性(变量)等 --> <profile> <id>dev</id> <activation> <!-- 默认激活 --> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- 开发 --> <packaging.type>jar</packaging.type> <main.class>xyz.jangle.MainApp</main.class> </properties> </profile> <profile> <id>product</id> <properties> <!-- 生产 --> <packaging.type>war</packaging.type> <main.class>xyz.jangle.MainWebApp</main.class> </properties> </profile> </profiles>

    6、使用变量定义打包类型

    <groupId>xyz.jangle</groupId> <artifactId>app</artifactId> <packaging>${packaging.type}</packaging>

    7、通过打包命令选择具体环境

    war包package :

    package -Pproduct

    jar包package:package   :

    package 或者 package -Pdev

     

    Processed: 0.008, SQL: 9