lex*_*ore 7 java maven-plugin maven
我正在编写一个 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;
Run Code Online (Sandbox Code Playgroud)
从依赖项创建工件:
final Set<Artifact> dependencyArtifacts =
MavenMetadataSource.createArtifacts(artifactFactory,
project.getDependencies(), "compile", null, project);
Run Code Online (Sandbox Code Playgroud)
使用ArtifactResolver来传递解决工件:
artifactResolver.resolveTransitively(artifacts, originatingArtifact,
managedVersions, localRepository, remoteRepositories,
artifactMetadataSource, filter, moreListeners);
Run Code Online (Sandbox Code Playgroud)
我现在正试图将所有这些移到当前的 Maven (3.3.9) 中,突然间几乎所有内容 ( ArtifactMetadataSource, ArtifactFactory, MavenProjectBuilder) 都被弃用了,并且应该使用零通知。
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |