如何以编程方式为Maven创建Plexus容器?

问题描述:

我已经写了一个Maven插件的一部分,但它不能再作为插件运行。它可以访问SCM或任何pom.xml,只是一个工件库和一些Maven坐标。它意味着采用Maven坐标并打印出它们的依赖关系(对它们进行一些报告)。要做到这一点就需要编程访问(例如):如何以编程方式为Maven创建Plexus容器?

  • MavenProjectBuilder
  • DependencyGraphBuilder

平常的东西,你会注入魔力,但它不是一个魔力而无法运行(因为我没有一个pom.xml)。

我的代码并没有帮助我,例如AbstractMojoTestCase需要一个pom.xml,这是我没有的。

我想一些代码,如..

DefaultPlexusContainer container = new DefaultPlexusContainer(); 
    Context context = container.getContext(); 
    context.put("plexus", new DefaultPlexusContainer()); 
    container.initialize(); 
    container.start(); 

    MavenProjectBuilder mavenProjectBuilder = (MavenProjectBuilder) container.lookup(MavenProjectBuilder.ROLE); 
    DependencyGraphBuilder dependencyGraphBuilder = (DependencyGraphBuilder) container.lookup(DependencyGraphBuilder.class.getName()); 
    MavenProject project = mavenProjectBuilder.buildFromRepository(artifact, remoteArtifactRepositories, localRepository); 
    // do stuff with dependencies 

但还有一些人失踪。帮帮我!

+0

这听起来像你需要像Maven的调用,插件来创建可用于集成测试一个真正的行家环境? – khmarbaise 2013-02-08 11:40:30

看一看它是如何做https://github.com/jenkinsci/lib-jenkins-maven-embedder(我们使用,在詹金斯类似用途)