比较:依赖、工件和 MavenProject

这是一个小矩阵,可以帮助您选择正确的实例。

一般来说:

  • Artifact 保存映射在某个坐标上的文件(GAV + 分类器 + 扩展名),
  • 依赖项包含一个工件并具有传递信息,
  • 一个 MavenProject 包含一个 pom 文件,一个从包装中派生的可选主文件,并且可以具有附加文件(= 带有分类器和扩展名),所有这些都使用相同的 GAV。
依赖 神器 Maven项目
有依赖关系 是的 是的
文件类型参考 类型 文件扩展名 包装
版本范围 是的
范围 是的
附加工件 是的

这意味着以下内容:

  • 从依赖项到工件是可能的,因为您可以将类型映射到扩展名(请参阅默认依赖项类型)。但是,不可能从工件返回到依赖项,例如,有几种类型具有 jar 作为文件扩展名。
  • 没有传递伪影之类的东西。解析过程中的过滤基于 DependencyFilters,ArtifactFilters 只能在之后应用,因此功能较弱。

请注意,由于历史原因,Maven 内部Artifact API混合了依赖项和 artifact 概念。