比较:依赖、工件和 MavenProject
这是一个小矩阵,可以帮助您选择正确的实例。
一般来说:
- Artifact 保存映射在某个坐标上的文件(GAV + 分类器 + 扩展名),
- 依赖项包含一个工件并具有传递信息,
- 一个 MavenProject 包含一个 pom 文件,一个从包装中派生的可选主文件,并且可以具有附加文件(= 带有分类器和扩展名),所有这些都使用相同的 GAV。
|
依赖 |
神器 |
Maven项目 |
有依赖关系 |
是的 |
不 |
是的 |
文件类型参考 |
类型 |
文件扩展名 |
包装 |
版本范围 |
是的 |
不 |
不 |
范围 |
是的 |
不 |
不 |
附加工件 |
不 |
不 |
是的 |
这意味着以下内容:
- 从依赖项到工件是可能的,因为您可以将类型映射到扩展名(请参阅默认依赖项类型)。但是,不可能从工件返回到依赖项,例如,有几种类型具有 jar 作为文件扩展名。
- 没有传递伪影之类的东西。解析过程中的过滤基于 DependencyFilters,ArtifactFilters 只能在之后应用,因此功能较弱。
请注意,由于历史原因,Maven 内部Artifact API混合了依赖项和 artifact 概念。