我正在编写一个Maven插件,用于对Maven项目中的依赖项进行分析。对于此分析,我需要将项目依赖项传递到文件中。基本上,我需要项目直接或间接使用的所有JAR作为本地文件,以便我的插件可以分析它们。
如何在现代(~3.3.x)Maven中执行此操作?
我在早期版本中所做的是:
注入大量组件和参数。
@Component
protected ArtifactResolver artifactResolver;
@Component
protected ArtifactMetadataSource artifactMetadataSource;
@Component
protected ArtifactFactory artifactFactory;
@Parameter(defaultValue="${localRepository}", required=true, readonly=true)
protected ArtifactRepository localRepository;
@Component(role=MavenProjectBuilder.class)
protected MavenProjectBuilder mavenProjectBuilder;
@Component
protected ArtifactGraphBuilder artifactGraphBuilder;
@Parameter(defaultValue="${project.remoteArtifactRepositories}", required = true, readonly = true)
protected List<ArtifactRepository> remoteArtifactRepositories;
@Parameter( defaultValue = "${project}", readonly = true)
protected MavenProject project;
从依赖项创建工件:
final Set<Artifact> dependencyArtifacts =
MavenMetadataSource.createArtifacts(artifactFactory,
project.getDependencies(), "compile", null, project);
使用ArtifactResolver
传递解析工件:
artifactResolver.resolveTransitively(artifacts, originatingArtifact,
managedVersions, localRepository, remoteRepositories,
artifactMetadataSource, filter, moreListeners);
我现在正试图将所有这些转移到当前的Maven(3.3.9),突然几乎所有的东西(ArtifactMetadataSource
,ArtifactFactory
,MavenProjectBuilder
)都被弃用,而没有注意到什么应该使用。