当前位置: 首页 > 知识库问答 >
问题:

使用Maven解析器提供程序以编程方式获取有效的POM

姚晋
2023-03-14

>

  • 给定本地文件系统中的POM文件。
  • 我希望通过编程方式获得该POM文件的有效POM。具体来说,我想做以下几点:

      null

    这里有一个指向可以运行的示例Maven项目的GitHub链接:https://GitHub.com/sahilm/maven-resolver-test

    示例程序执行以下操作:

    • 从Maven Central下载最新的spring boot POM。
    • 打印它的直接依赖项(包括父deps)
    • 我需要帮助来理解为什么我必须使用包私有类来使东西工作。
    • 还有其他方法可以获得我需要的信息吗?
  • 共有1个答案

    公孙茂学
    2023-03-14

    您可以(在项目中)在包下面创建一个公共类:org.apache.maven.repository.internal扩展包可访问性类。只需使用供应商不可能在furutre中使用的类名。

    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);
    
     类似资料:
    • 简短:给定(groupId,artifactId,version,repository URL),我可以用编程方式让Maven解析工件URL吗? Long:给定(groupId、artifactId、version、repository URL),可以下载一个Maven工件。工件的URL通常如下所示: 方案://{repository}/{groupId}/{artifactId}/{versio

    • 问题内容: 如何以编程方式在Maven执行环境之外获取Maven模块的所有依赖关系? 到目前为止,我有: 通过maven-core: 并通过jcabi-aether: 到目前为止,这通常正确吗? 现在的问题是,我得到了NullPointerException: 因为mavenProject.getRemoteProjectRepositories()返回null。 如何在考虑settings.xm

    • 问题内容: 如何在实现由jersey API提供的Exceptionmapper的jersey中以编程方式注册我的提供程序?我不想使用@Provider批注,而不想使用ResourceConfig注册提供程序,我该怎么做? 例如: 这是正确的方法吗? 问题答案: 我猜您没有,因为您似乎不确定如何使用它。首先,它不是必需的。如果您 确实 使用它,那应该是它自己的单独的类。您可以在那里注册映射器。 但

    • 我想以编程方式获取maven包的基于数字的版本号——更具体地说:我需要RELEASE版本的数字。 例如: JUnit是一个众所周知的maven包。根据http://mvnrepository.com/artifact/junit/junit,当前版本为4.12。 因此,给定工件标识符,我希望收到相应的RELEASE版本号(在此特定情况下为4.12)。由于maven是某种存储库,我希望有一个简单的方

    • 我正在尝试使用Thymeleaf模板呈现XML/JSON。我不想使用模板名称渲染视图,只想解析模板,如下所示。问题是我得到的只是模板名,而不是它的内容。 设置: 模板(src/main/resources/templates/早餐菜单.xml): 用法: 使用Thymeleaf3.0。0.BETA01。

    • 如何在jersey中以编程方式注册我的提供者,jersey实现了jersey API提供的Exceptionmapper?我不想使用@Provider注释,而是想使用ResourceConfig注册提供者,我该怎么做? 例如: 这是正确的做法吗?