在使用 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