说明
springboot构建jar部署,通过使用 java -jar xxx.jar 命令启动服务,非常方便,但是通过maven构建的jar包含 \BOOT-INF\lib\下的所有依赖jar包,导致jar包文件太大,本文将接解决这一问题。
解决思路
- 在maven构建springboot项目jar时候,将lib文件夹分离出来。
- 在运行jar的时候,能够应用到分离的lib包
解决步骤
正常构建 分离lib
执行mvn install 命令,构建jar包,构建后的jar包结构如图:
|--META-INF
|--BOOT-INF
|--classes
|--lib
|--org
处理:
将构建好的jar包解压,拷贝出lib目录
修改pom文件 构建不包含lib的jar包
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.johnnian.App</mainClass>
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
处理:
执行mvn install 构建jar包 查看jar包结构
|--META-INF
|--BOOT-INF
|--classes
|--org
运行编译jar包
1.将分离的lib文件和jar包放在同一个文件夹中,目录结构如下:
|--lib
|--xxx.jar
2.执行运行命令(备注 /lib 为分离lib文件路径 即项目依赖jar包)
java -Dloader.path=/lib -jar /xxx.jar
注意
1.一定要按照步骤进行,两次构建,不要一次构建,然后将lib目录直接拷贝出来执行。