我正在编写一个Maven 2插件,它必须遍历所有项目依赖项,并递归地覆盖这些依赖项的所有依赖项。到目前为止,我只使用此代码设法解决了直接依赖关系:
for (Dependency dependency : this.project.getModel().getDependencies())
{
Artifact artifact = this.artifactFactory.createArtifact(
dependency.getGroupId(),
dependency.getArtifactId(),
dependency.getVersion(),
dependency.getScope(),
dependency.getType());
this.artifactResolver.resolve(
artifact,
this.remoteRepositories,
this.localRepository);
....
}
如何以递归方式执行相同的操作,以便找到依赖项的依赖项等等?
答案 0 :(得分:13)
A)不要使用
project.getModel().getDependencies()
,
使用project.getArtifacts()
代替。这样你就可以自动获得传递依赖。要启用它:将你的魔力标记为
@requiresDependencyResolution compile
或@requiresDependencyCollection compile
(参见Mojo API Specification以供参考)。
B)你真的想使用遗留依赖API吗?为什么不use the new Maven 3 Aether API?