问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

【轻量打包jar,减少不必要依赖】

创作时间:
作者:
@小白创作中心

【轻量打包jar,减少不必要依赖】

引用
CSDN
1.
https://blog.csdn.net/qq_31532979/article/details/136253321

在Java开发中,如何减小JAR包的大小是一个常见的需求。本文将介绍6种有效的方法,帮助开发者优化项目依赖、压缩资源文件、调整打包方式等,从而生成更轻量的JAR包。

有几种方法可以减少最终生成的 JAR 文件的大小:

1. 优化依赖

确保只引入项目所需的依赖项,并移除掉未使用的依赖项。可以使用
mvn dependency:analyze
命令来分析项目的依赖关系,并移除掉未使用的依赖。优化构建:将项目依赖项从传递性依赖改为直接依赖。这样可以减少传递性依赖的数量,提高构建性能。可以使用
mvn dependency:tree
命令来查看项目的依赖树,并根据需要调整依赖关系。

使用更高效的依赖版本:定期检查项目的依赖项,并将其更新为最新的稳定版本。这可以提供更好的性能和功能,同时也可以修复已知的bug和安全漏洞。

缓存依赖项:使用 Maven 的本地仓库或者类似工具(如 Nexus、Artifactory)来缓存项目的依赖项。这样可以避免每次构建都下载依赖项,提高构建速度。

并行构建:如果项目中有多个模块,可以使用 Maven 的并行构建功能来加快构建速度。可以在
<build>
标签下的
<plugins>
标签中配置
<parallel>

<threadCount>
属性来启用并行构建。

使用构建缓存:通过配置构建缓存,可以避免重复构建已经构建过的模块。可以使用 Maven 的构建缓存插件(如 build-cache-maven-plugin)来启用构建缓存。

使用增量构建:对于大型项目,可以使用增量构建来只构建发生更改的模块,而不是整个项目。可以使用 Maven 的增量构建插件(如 Maven Invoker Plugin)来实现增量构建。

并行测试:如果项目中有大量的单元测试,可以将其并行执行以加快测试速度。可以在 Maven 的
<plugins>
标签中配置 Surefire Plugin 的
<parallel>

<threadCount>
属性来启用并行测试。

优化测试范围:在构建时只运行必要的测试。可以使用 Maven 的 Surefire Plugin 的
<includes>

<excludes>
属性来配置运行的测试范围。

2. 压缩资源文件

将项目中的资源文件进行压缩,减小文件的大小。可以使用工具如 Gzip 或者 Zopfli 来进行资源文件的压缩。

3. 优化打包方式

可以通过设置 JAR 文件的压缩级别来减小文件的大小。在 Maven 中,可以在项目的
pom.xml
文件中设置以下配置来启用更高的压缩级别:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <configuration>
        <archive>
          <compress>true</compress>
          <index>true</index>
          <manifest>
            <addClasspath>true</addClasspath>
          </manifest>
          <manifestEntries>
            <mode>zip</mode>
            <method>deflate</method>
          </manifestEntries>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>

4. 移除打包中不必要的文件

可以在 Maven 的
pom.xml
文件中添加以下配置,来排除不必要的文件:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <configuration>
        <excludes>
          <!-- 排除不需要的文件 -->
          <exclude>**/*.txt</exclude>
          <exclude>**/*.xml</exclude>
        </excludes>
      </configuration>
    </plugin>
  </plugins>
</build>

5. 使用 ProGuard 进行优化

ProGuard 是一个 Java 字节码优化工具,可以帮助减小 JAR 文件的大小。通过移除未使用的代码和压缩字节码文件,可以进一步减小 JAR 文件的大小。

6. 使用模块化打包

将公共的 JAR 文件发布到 Maven 私有仓库或者本地仓库,并在项目中使用
compileOnly
或者
provided
的方式引入这些依赖,并将它们排除在最终的打包过程中。这样可以减小最终生成的 JAR 文件的大小。

根据实际需求,选择合适的方法来减小 JAR 文件的大小。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号