Maven 2 如何查找MavenProject?

Maven 2 如何查找MavenProject?,maven-2,maven,Maven 2,Maven,在给定MavenProject实例的groupId、artifactId、version等的情况下,如何以编程方式构造它(而不是当前的项目) 更新:我正在尝试为创建修补程序。我相信maven依赖插件依赖于maven 2.x,所以我不能使用任何maven 3.x API。如何进行这项工作取决于您是想从本地存储库中的工件还是硬盘上的pom文件构建项目。无论哪种方式,您都需要获得一个ProjectBuilder,您可以在Mojo中这样做: /** @component role = "org.apac

在给定MavenProject实例的groupId、artifactId、version等的情况下,如何以编程方式构造它(而不是当前的项目)


更新:我正在尝试为创建修补程序。我相信maven依赖插件依赖于maven 2.x,所以我不能使用任何maven 3.x API。

如何进行这项工作取决于您是想从本地存储库中的工件还是硬盘上的pom文件构建项目。无论哪种方式,您都需要获得一个
ProjectBuilder
,您可以在Mojo中这样做:

/** @component role = "org.apache.maven.project.ProjectBuilder" */
protected ProjectBuilder m_projectBuilder;
如果您想从本地回购协议中的工件进行构建,还需要:

/** @parameter expression="${localRepository}" */
protected ArtifactRepository m_localRepository;
一旦您有了这些,您就可以从本地存储库中的工件构建
MavenProject

  //Construct the artifact representation
Artifact artifact = 
    new DefaultArtifact(groupId,artifactId,version,scope,type,classifier,new DefaultArtifactHandler());
  //Resolve it against the local repository
artifact = m_localRepository.find(artifact);
  //Create a project building request
ProjectBuildingRequest request = new DefaultProjectBuildingRequest();
  //Build the project and get the result
MavenProject project = m_projectBuilder.build(artifact,request).getProject();
或从pom文件:

File pomFile = new File("path/to/pom.xml");
ProjectBuildingRequest request = new DefaultProjectBuildingRequest();
MavenProject project = m_projectBuilder.build(pomFile,request).getProject();

很抱歉,我应该提到:我正在尝试为maven依赖插件构建一个补丁,它依赖于maven 2.x。我不能使用您上面提到的Maven 3.x API。在这种情况下,您可能需要使用MavenProjectBuilder类,它是3.x ProjectBuilder的2.x等价物。您应该能够使用@component role=“org.apache.maven.project.MavenProjectBuilder”获得该类的实例,大多数其他类应该出现在2.x api中,或者具有近似值。