java - Maven 3插件:列出项目的依赖项
问题描述
我正在尝试创建一个 maven 3 插件,该插件应该解析项目的每个依赖项和传递依赖项,并列出工件,最好带有指向本地 maven 存储库中 jar 文件的链接。我运气不太好。
之后我必须处理依赖项,依赖项和树插件对我来说并不是一个真正的选择。我需要创建一个可以处理依赖项工件的自定义插件。
我尝试使用 DependencyGraphBuilder 创建一个插件,但没有成功:
@Parameter(defaultValue = "${project.build.directory}", property = "outputDir", required = true)
private File outputDirectory;
@Parameter(defaultValue = "${project}", readonly = true, required = true)
private MavenProject project;
@Parameter(defaultValue = "${session}", readonly = true, required = true)
private MavenSession session;
@Component(hint = "maven3")
private DependencyGraphBuilder dependencyGraphBuilder;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
File targetDir = outputDirectory;
if (!targetDir.exists()) {
targetDir.mkdirs();
}
ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
buildingRequest.setProject(project);
try {
try (PrintWriter writer = new PrintWriter(new File(outputDirectory, "output"))) {
writer.println("I did shit");
}
DependencyNode depenGraphRootNode = dependencyGraphBuilder.buildDependencyGraph(buildingRequest, null);
CollectingDependencyNodeVisitor visitor = new CollectingDependencyNodeVisitor();
depenGraphRootNode.accept(visitor);
List<DependencyNode> children = visitor.getNodes();
for (DependencyNode node : children) {
System.out.println(node.getArtifact().getGroupId() + " " + node.getArtifact().getArtifactId());
try (PrintWriter writer = new PrintWriter(new File(outputDirectory, "output"))) {
writer.println(node.getArtifact().getGroupId() + " " + node.getArtifact().getArtifactId());
}
}
} catch (Exception ex) {
}
}
例如,我得到了一些不同的例外,具体取决于我的 pom 中的依赖版本
java.lang.NoSuchMethodError: org.apache.maven.artifact.versioning.DefaultArtifactVersion.compareTo(Lorg/apache/maven/artifact/versioning/ArtifactVersion;)我
和
java.lang.NoClassDefFoundError: org/eclipse/aether/RepositorySystemSession
有人可以为我提供一个工作依赖设置以使 DependencyGraphBuilder 工作,或者提供一种解析编译项目依赖项的不同方式吗?
解决方案
推荐阅读
- azure - Azure Boards 中的 JavaScript
- aws-glue - AWS Glue 作业可以写入 SAP HANA 吗?
- c++ - 通过非智能指针参数将智能指针传递给函数
- apache - 需要在 .htaccess 文件中重定向 301 一个 URL,但它添加了额外的 http//?
- c - 我的 fgetc 没有返回所需的输出。(C编程初学者)
- unity3d - 如何使用 Hololens 2 检测“长按”手势?(带有 MRTK 的 Unity3D)
- android - 我可以在安卓上使用 DNA 功能吗?
- python - 将所有值导入excel
- python - 通过使用 Visual Studio 的 Setup Project 插件创建的安装程序在 Windows 10 中查找 Anaconda 的目录
- r - 根据行位置范围对分组数据框进行子集