从Maven插件解决项目依赖性

时间:2016-12-19 23:12:30

标签: java maven maven-plugin

我正在编写一个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),突然几乎所有的东西(ArtifactMetadataSourceArtifactFactoryMavenProjectBuilder)都被弃用,而没有注意到什么应该使用。

0 个答案:

没有答案