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

Sah*_*hoo 7 java maven aether

我要怎么办

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

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

什么有效?

我正在使用Maven Resolver Provider进行哪些工作。但是我必须使用包私有类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"

我需要什么帮助?

  • 我需要帮助来理解为什么我必须使用包私有类才能使工作正常进行。
  • 有没有其他方法可以获取我需要的信息?

Ind*_*sak 3

也许你可以使用ProjectModelResolver. 这是一个代码片段,

    DefaultRepositorySystem repositorySystem =
            new DefaultRepositorySystem();
    repositorySystem.initService(locator);

    ModelResolver modelResolver =
            new ProjectModelResolver(session, requestTrace,
                    repositorySystem, remoteRepositoryManager, repos,
                    ProjectBuildingRequest.RepositoryMerging.POM_DOMINANT,
                    null);
Run Code Online (Sandbox Code Playgroud)

在这里包含了一个工作代码。