java - 使用 Maven Resolver Provider 以编程方式获取有效的 POM

标签 java maven aether

我想做什么?

  • 给定本地文件系统上的 POM 文件。
  • 我想以编程方式获取该 POM 文件的有效 POM。具体来说,我想执行以下操作:

    • 解决 POM 依赖关系
    • 确保处理所有父 POM
    • 获取完全解析的POM的依赖列表
    • 等等...
  • 我不需要获取传递依赖。

什么有效?

我正在使用 Maven Resolver Provider哪种作品。然而 我必须使用包私有(private)类 org.apache.maven.repository.internal.DefaultModelResolver

这里是您可以运行的示例 Maven 项目的 GitHub 链接:https://github.com/sahilm/maven-resolver-test

示例程序执行以下操作:

  • 从 Maven Central 下载最新的 spring boot POM。
  • 打印出它的直接依赖关系(包括父级依赖)

你可以运行程序: mvn exec:java -Dexec.mainClass="com.sahilm.maven_resolver_test.Test"

我需要什么帮助?

  • 我需要帮助来理解为什么我必须使用包私有(private)类来让东西工作。
  • 还有其他方法可以获取我需要的信息吗?

最佳答案

您可以(在您的项目中)在包下创建一个公共(public)类:org.apache.maven.repository.internal,它扩展了 package-accessibility 类。只需使用供应商将来不可能使用的类名。

package org.apache.maven.repository.internal;
public class VisibleDefaultModelResolver extends DefaultModelResolver{

    public VisibleDefaultModelResolver(RepositorySystemSession session, RequestTrace trace, String context, ArtifactResolver resolver, VersionRangeResolver versionRangeResolver, RemoteRepositoryManager remoteRepositoryManager, List<RemoteRepository> repositories) {
        super(session, trace, context, resolver, versionRangeResolver, remoteRepositoryManager, repositories);
    }

}

然后你的代码变成:

ModelResolver modelResolver = new VisibleDefaultModelResolver(session, requestTrace, "context", artifactResolver, versionRangeResolver, remoteRepositoryManager, repos);

关于java - 使用 Maven Resolver Provider 以编程方式获取有效的 POM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55527844/

相关文章:

java - 为什么缓存元素不会立即过期?

java - Android Studio Logcat 不显示日志

java - 以编程方式从远程 Maven 存储库下载工件

java - 异常org.eclipse.aether.resolution.DependencyResolutionException : Failed to read artifact descriptor for ch. qos.logback :logback-classic:jar:1. 2.3

java - IntelliJ IDEA 中的调试超时

java - eclipse 朱诺 : unassigned closeable value

java - Maven的设置版本插件没有在子模块中设置父版本

Maven 错误 : package javax. servlet 不存在

java - 用于执行 Java 项目的 Bash 脚本

java - Aether,如何获得与层次结构的依赖关系