当前位置:   article > 正文

SpringBoot项目jar包过大,如何瘦身_jar 太大

jar 太大
1、简介

        在使用springBoot框架进行项目开发的过程中,使用Maven打的jar包会把依赖的lib目录中的jar包都包含进来,会导致单个jar包特别大,不利于项目部署。在这种情况下,可以采用依赖外置的方式,Maven打的jar包只包含源码,不包含依赖,这样的jar包可以缩小到几MB。

        本文介绍单个项目和带有父项目含有多个模块的大型项目,以及公共模块没有主启动类打包出错的解决方案。

2、单个项目
2.1、将依赖的jar包保存到指定的目录下

pom.xml添加对应配置插件如下:

  1. <!-- 复制依赖jar包到指定目录(在package阶段) -->
  2. <plugin>
  3. <groupId>org.apache.maven.plugins</groupId>
  4. <artifactId>maven-dependency-plugin</artifactId>
  5. <version>3.6.0</version>
  6. <executions>
  7. <execution>
  8. <id>copy-dependencies</id>
  9. <phase>package</phase>
  10. <goals>
  11. <goal>copy-dependencies</goal>
  12. </goals>
  13. <configuration>
  14. <outputDirectory>E:/jar</outputDirectory>
  15. <overWriteReleases>false</overWriteReleases>
  16. <overWriteSnapshots>false</overWriteSnapshots>
  17. <overWriteIfNewer>true</overWriteIfNewer>
  18. </configuration>
  19. </execution>
  20. </executions>
  21. </plugin>
2.2、打包不包含依赖

pom.xml添加对应配置插件如下:

  1. <plugin>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-maven-plugin</artifactId>
  4. <configuration>
  5. <!-- 主启动类全限定类名 -->
  6. <mainClass>*.*.Application</mainClass>
  7. <layout>ZIP</layout>
  8. <!-- 打包不含有依赖jar -->
  9. <includes>
  10. <include>
  11. <groupId>nothing</groupId>
  12. <artifactId>nothing</artifactId>
  13. </include>
  14. </includes>
  15. </configuration>
  16. <executions>
  17. <execution>
  18. <goals>
  19. <goal>repackage</goal>
  20. </goals>
  21. </execution>
  22. </executions>
  23. </plugin>
3、父项目含有多个模块
3.1、父项目配置
  1. <plugin>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-maven-plugin</artifactId>
  4. <configuration>
  5. <layout>ZIP</layout>
  6. <!-- 打包不含有依赖jar -->
  7. <includes>
  8. <include>
  9. <groupId>nothing</groupId>
  10. <artifactId>nothing</artifactId>
  11. </include>
  12. </includes>
  13. </configuration>
  14. <executions>
  15. <execution>
  16. <goals>
  17. <goal>repackage</goal>
  18. </goals>
  19. </execution>
  20. </executions>
  21. </plugin>
  22. <!-- 复制依赖jar包到指定目录(在package阶段) -->
  23. <plugin>
  24. <groupId>org.apache.maven.plugins</groupId>
  25. <artifactId>maven-dependency-plugin</artifactId>
  26. <version>3.6.0</version>
  27. <executions>
  28. <execution>
  29. <id>copy-dependencies</id>
  30. <phase>package</phase>
  31. <goals>
  32. <goal>copy-dependencies</goal>
  33. </goals>
  34. <configuration>
  35. <outputDirectory>E:/jar</outputDirectory>
  36. <overWriteReleases>false</overWriteReleases>
  37. <overWriteSnapshots>false</overWriteSnapshots>
  38. <overWriteIfNewer>true</overWriteIfNewer>
  39. </configuration>
  40. </execution>
  41. </executions>
  42. </plugin>
3.2、子模块配置
  1. <plugin>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-maven-plugin</artifactId>
  4. <executions>
  5. <execution>
  6. <goals>
  7. <goal>repackage</goal>
  8. </goals>
  9. </execution>
  10. </executions>
  11. </plugin>
4、公共模块没有主启动类打包报错解决方式

在公共模块的pom文件中添加:

  1. <!-- 公共模块跳过打包 -->
  2. <build>
  3. <plugins>
  4. <plugin>
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-maven-plugin</artifactId>
  7. <configuration>
  8. <skip>true</skip>
  9. </configuration>
  10. </plugin>
  11. </plugins>
  12. </build>
5、项目启动

项目启动通过 -Dloader.path=E:/jar 指定依赖路径即可。

java -Xmx**m -Xmx**m -Dloader.path=E:/jar **.jar  &

总结:本文详细介绍单个项目和带有父项目含有多个模块的大型项目,以及公共模块没有主启动类打包出错的解决方案。

        本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/376316
推荐阅读
相关标签
  

闽ICP备14008679号