springboot打包方式有哪些?详解

KLQ 2020-07-21 09:09:43 java常见问答 5572

下面要给大家介绍的就是spring boot jar和war以及目录的打包和启动方面的内容,对这方面不是很清楚的小伙伴可以来详细的了解一下。

jar方式打包

pom配置

<!-- 父moudle --->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    
    <!-- jar方式打包 -->
    <pakaging>jar</packaging>
        
        <build>
            <plugins>
                父moudle spring-boot-starter-parent中管理了该插件直接配置使用
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>

打包完成之后,生成的jar包

包含 lib
2019/03/25  10:12        19,920,734 spring-boot-webflux-1.0-SNAPSHOT.jar
仅仅打包的moudle
2019/03/25  10:12             7,129 spring-boot-webflux-1.0-SNAPSHOT.jar.original

spring-boot-webflux-1.0-SNAPSHOT.jar包所含的文件如下图所示

org目录下面是spring boot的类;Meta-inf目录下面是jar的元信息的描述;boot-info包含了jar启动要用的lib以及classes;

spring-boot-webflux-1.0-SNAPSHOT.jar包

Meta-inf目录下面是jar的元信息的描述

jar的元信息的描述

在Java当中,Manifest文件的作用和properties文件类似,用键值对的形式保存配置信息。

在jar规范当中,存在着一个MANIFEST.MF,在这当中有一个Main-Class属性,jar包启动的时候会通过Manifest类去读MANIFEST.MF里的属性,API:java.util.jar.Manifest#getAttributes JarLauncher类继承了ExecutableArchiveLauncher类中的getMainClass方法。

springboot打包方式

MANIFEST.MF的文件

MANIFEST.MF的文件

boot-inf文件下包含了lib和classes文件

lib和classes文件

spring boot包含了JarLauncher启动类

JarLauncher启动类

war包启动

把项目打包成war包,可以放到独立的web容器当中

例-tomcat

pom配置

war包启动
    <
    packaging > war < /packaging>
    
    <
    dependencies >
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency> <
    /dependencies>
    
    <
    build >
    <plugins>
      打 war包插件-----父moudle   spring-boot-starter-parent中管理了该插件直接配置使用
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins> <
    /build>

除了jar或者是war启动的方式之外,还有目录启动方式

目录启动方式能够帮助解决老旧的jar不支持Spring Boot新方式,例-老版本的mybatis

假如是jar包,解压之后,跳转解压目录,并且执行java命令启动,启动类是 org.springframework.boot.loader.JarLauncher

假如是war包,解压之后,跳转解压目录,并且执行java命令启动类是org.springframework.boot.loader.WarLauncher

以上的内容你都清楚了吗?想了解更多相关知识,请继续通过奇Q工具网的常见问题栏目来进行了解吧。

推荐阅读:

springboot打包成war,springboot项目打包教程

springboot打包插件详解

springboot打包成jar部署要怎么运行?有哪些方式?