【问题标题】:How do I instantiate MavenResolver for ModelBuilder usage?如何实例化 MavenResolver 以供 ModelBuilder 使用?
【发布时间】:2014-12-09 16:00:22
【问题描述】:

这是this answer的延续。

我正在尝试使用maven-model-builder 以编程方式访问 pom.xml 的完整有效 pom。我目前被我需要创建一个MavenResolver 对象的事实所阻止。我找到了DefaultMavenResolver,但访问受限。

我也在一个不是 maven 插件的项目中。如果我可以在不执行 maven 的情况下实例化它,那就太好了。

【问题讨论】:

    标签: java maven maven-3


    【解决方案1】:

    其实这很简单(我用的是 Scala,但这并不重要):

    import java.io.File
    
    import org.apache.maven.model.Dependency
    import org.apache.maven.model.building.{DefaultModelBuilderFactory, DefaultModelBuildingRequest, ModelBuildingRequest}
    
    object POMParser {
    
      def parse(pomXml: File): List[Dependency] = {
        val modelBuilder = new DefaultModelBuilderFactory().newInstance()
        val req = new DefaultModelBuildingRequest()
        req.setPomFile(pomXml)
        req.setProcessPlugins(false)
        req.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL)
        val model = modelBuilder.build(req).getEffectiveModel
        import collection.JavaConverters._
        model.getDependencies.asScala
      }
    
    }
    

    这将返回填充了所有依赖项的有效模型,并且父 POM 文件属性中的所有占位符也被解析。

    希望对遇到与 OP 相同问题的人有所帮助。

    【讨论】:

    • 如果解析的 pomFile 定义了一个父 pom,我们需要一个 modelResolver
    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多