一、jar包分离介绍

springboot构建jar部署,通过使用 java -jar xxx.jar 命令启动服务,非常方便。

但是通过maven构建的jar包含 \BOOT-INF\lib\下的所有依赖jar包,导致jar包文件太大。

本文将lib文件夹下所依赖的jar包分离出来,解决文件过大问题。

二、jar包分离实施步骤

(1)按照正常的springboot项目打包方式,对项目进行打包package,其打包后目录如下:
|--META-INF
|--BOOT-INF
    |--classes
    |--lib
|--org

打完包后,进行解压。找到\BOOT-INF\lib文件夹,将lib文件夹复制出来,后续使用。

其中\BOOT-INF\lib目录下存放着所有的依赖jar包,ojdbc8-19.8.0.0.jar / lombok-1.18.16.jar / spring-boot-2.4.1.jar … 占用了大量的空间。jar包分离就是将其独立开来。

(2)通过修改pom.xml中的一部分配置,再次打包,此时打包的内容已经排除了其依赖的各种jar包。
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>

    <!--start-->
    <configuration>
        <!--这里对应项目的主入口-->
        <mainClass>com.ityj.multidb.SpringbootMultiDatasourcesApplication</mainClass>
        <layout>ZIP</layout>
        <includes>
            <include>
                <groupId>nothing</groupId>
                <artifactId>nothing</artifactId>
            </include>
        </includes>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
    <!--end-->
    
</plugin>

(1)直接重新打包,即可

(2)如果通过命令:在idea工具中打入:mvn clean dependency:copy-dependencies -DoutputDirectory=target/lib package

两种方式打包都可以,最终的jar包已经排除掉了lib文件。推荐第一种方便快捷。

(3)将第一次打包提取出来的lib文件夹和第二次打的jar包放在同一个目录下,执行以下命令,启动项目:

在这里插入图片描述

java -jar -Dloader.path=./lib springboot-multi-datasources-0.0.1-SNAPSHOT.jar

三、总结

  1. springboot项目什么都不用动,直接通过maven工具package打包,进行解压。并把\BOOT-INF\lib目录下的lib文件夹整个内容复制出来。(取出lib文件夹的内容)

  2. 在项目pom.xml中的plugin中加入以下内容,注意层级关系以及要把入口类改成对应的项目名。(start到end的内容)

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    
        <!--start-->
        <configuration>
            <!--这里对应项目的主入口-->
            <mainClass>com.ityj.multidb.SpringbootMultiDatasourcesApplication</mainClass>
            <layout>ZIP</layout>
            <includes>
                <include>
                    <groupId>nothing</groupId>
                    <artifactId>nothing</artifactId>
                </include>
            </includes>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
        <!--end-->
        
    </plugin>
    

    修改后再次package打包,这次的jar包就没有了依赖内容,文件较小。把生成的jar包放在与首次打包生成的lib文件夹同目录下。

  3. 执行启动脚本或者命令即可

    java -jar -Dloader.path=./lib springboot-multi-datasources-0.0.1-SNAPSHOT.jar
    
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐