Maven 中的工件描述符到底是啥?

Posted

技术标签:

【中文标题】Maven 中的工件描述符到底是啥?【英文标题】:What exactly is the artifact descriptor in Maven?Maven 中的工件描述符到底是什么? 【发布时间】:2017-06-09 08:53:43 【问题描述】:

我最近遇到了一些 Maven 依赖项的问题并遇到了错误:“无法读取工件描述符...”。

我的问题不是关于错误,而是关于工件描述符本身。我想知道实际的问题是什么或者是什么造成了问题,但我并没有真正找到关于什么是工件描述符的解释,所以我想知道是否有人可以帮助我。

【问题讨论】:

【参考方案1】:

换句话说,它是 POM。 POM 是描述 an artifact 的 Maven 特定文件。

Maven 3.3.9 在幕后使用 Eclipse Aether(它已作为 Maven Resolver API 的一部分并入 Maven 3.5.0 本身),它提供了 ArtifactDescriptorReader 类,解释:

提供有关与传递依赖解析相关的工件的信息。每个工件都应有一个随附的工件描述符,其中列出了工件的直接依赖关系。

其唯一的readArtifactDescriptor方法的Javadoc是:

获取有关工件的信息,例如其直接依赖项和潜在的重定位。

因此,当您遇到类似于“无法读取工件描述符...”的错误时,这意味着 POM could not be read, or could not be resolved.通常,它源于下载的 POM 损坏、代理 Internet 访问以及未正确配置 Maven 等网络问题。

【讨论】:

以上是关于Maven 中的工件描述符到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Selenium - Maven 依赖项 - 无法读取工件描述符

想要工件可追溯性而不放弃 SNAPSHOT 限定符

如何从 Maven 插件访问 Maven 占位符?

无法读取工件描述符:IntelliJ

找不到依赖项 'com.h2database:h2:1.4.200',无法读取 com.h2database:h2:jar 的工件描述符

.xib 文件中的占位符角色是啥?