如何为ModelBuilder实例化实例化MavenResolver?

时间:2014-12-09 16:00:22

标签: java maven maven-3

这是this answer的延续。

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

我也在一个不是maven插件的项目中。如果我可以在不执行maven的情况下实例化它将会很棒。

1 个答案:

答案 0 :(得分: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有同样问题的人。