什么是Java Jar包的META-INF/DEPENDENCIES文件?如何通过Maven生成?
问题1:META-INF/DEPENDENCIES文件是什么,对Jar包有什么作用?
- 这是Maven构建过程中生成的依赖声明文件,会清晰罗列当前Jar包所有的传递依赖信息,你给出的示例内容就是按所属组织分类,列出了每个依赖的名称、坐标、官方地址、许可证类型等核心信息。
- 它的核心作用有3点:
- 许可证合规校验:企业级项目引入第三方Jar包时,可直接通过该文件快速核对所有依赖的许可证类型,避免引入许可证不兼容的依赖带来法律风险
- 依赖冲突排查:项目出现依赖版本冲突时,可直接通过该文件确认当前Jar包内置的传递依赖版本,无需额外拉取pom文件逐层解析
- 依赖溯源:可清晰查看每个依赖的所属组织、来源信息,出现安全漏洞时能快速定位涉及的依赖范围
问题2:该文件如何生成?Maven构建时怎么配置才能生成?
- 该文件是
maven-project-info-reports-plugin插件的dependencies目标生成的,不属于Maven默认构建产物,需要主动配置插件才会生成。 - 具体配置方式如下,将配置添加到项目pom.xml的
<build><plugins>节点下即可:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> <version>3.4.5</version> <executions> <execution> <phase>package</phase> <goals> <goal>dependencies</goal> </goals> <configuration> <!-- 配置生成的依赖文件输出到META-INF目录 --> <outputDirectory>${project.build.outputDirectory}/META-INF</outputDirectory> <includeTransitiveDependencies>true</includeTransitiveDependencies> <includeLicenseInfo>true</includeLicenseInfo> </configuration> </execution> </executions> </plugin>
- 配置完成后,正常执行
mvn package命令构建Jar包时,就会自动在Jar包的META-INF目录下生成该DEPENDENCIES文件。
内容的提问来源于stack exchange,提问作者Sherein
相关产品推荐
相关产品推荐

