减小Maven项目生成的JAR包体积实现提升运维效率
作者:知楠行易
在Maven构建Java项目过程中,减小JAR包体积可通过排除不必要的依赖和使依赖jar包独立于应用jar包来实现,在pom.xml文件中使用<exclusions>标签排除不需要的依赖,有助于显著降低JAR包大小,此外,将依赖打包到应用外,可减少应用包的体积
在使用 Maven 构建 Java 项目时,有时需要减小生成的 JAR 包的体积,以提高部署效率或减少资源消耗。
以下是一些有效的方法来减小 JAR 包的体积:
- 排除不必要的依赖
- 打包时,依赖jar包独立于应用jar包
1. 排除不必要的依赖
通过排除项目中不需要的依赖,可以显著减小 JAR 包的体积。
在 pom.xml 中,可以在 标签中使用 标签来排除特定的依赖。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.5.4</version> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 其他依赖项 --> </dependencies>
2. 依赖jar包独立于应用jar包
一般来讲依赖不会经常变化,所以将 依赖 打包到应用外是个好主意,可以有效的减小应用包。
pom.xml 配置如下:
<!-- 打包时 依赖独立于项目jar包--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.github.nan.web.NanWebApplication</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.1.2</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <includeScope>runtime</includeScope> </configuration> </execution> </executions> </plugin>
注意:
- 第一部署应用 或者依赖有更新时
- 需要把依赖(lib)也上传到服务
效果如下:
├── target │ ├── classes │ ├── generated-sources │ ├── lib │ ├── maven-archiver │ ├── maven-status │ └── web-0.0.1-SNAPSHOT.jar
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。