1. 引言
在Java项目开发中,Maven作为主流的构建和依赖管理工具,其核心功能之一就是将项目源代码、资源文件及依赖打包成可发布的JAR(Java Archive)文件。JAR包是Java应用程序、库或模块分发和部署的基本单元。Maven提供了多种打包方式,以满足不同场景下的需求。本文将详细介绍Maven中常见的JAR包打包方式、配置方法及其适用场景。
2. 标准JAR包(默认打包)
这是Maven最基础、最常用的打包方式。当你在项目的pom.xml中未指定任何打包插件或特殊配置时,Maven默认使用maven-jar-plugin来生成一个标准的JAR包。
2.1 特点
- 仅包含项目编译后的类文件(.class):位于
target/classes目录下的内容。 - 不包含项目依赖:生成的JAR包中只有本项目代码,所有第三方依赖需要单独提供或在运行时通过classpath指定。
- 包含META-INF/MANIFEST.MF文件:包含基本的JAR元信息,如Manifest-Version、Created-By等。
2.2 典型配置
通常无需额外配置。如果需要定制Manifest信息,可以配置maven-jar-plugin:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <!-- 将依赖添加到Class-Path属性 --> <classpathPrefix>lib/</classpathPrefix> <!-- 依赖JAR的相对路径 --> <mainClass>com.example.MainApp</mainClass> <!-- 指定可执行主类 --> </manifest> </archive> </configuration> </plugin> </plugins> </build>适用场景:开发供其他项目依赖的库(Library)、工具包,或需要手动管理依赖和类路径的应用程序。
3. 可执行JAR包(Executable JAR / Fat JAR)
这种打包方式的目标是生成一个包含所有依赖(或部分依赖)的独立JAR文件,用户可以直接通过java -jar yo