2011-10-12 55 views

回答

1

這樣做的方式取決於您是要從本地存儲庫中的工件還是從硬盤上的pom文件構建項目。無論哪種方式,你需要得到一個ProjectBuilder,你可以不喜歡這樣的魔咒:如果你想從一個神器在你的本地倉庫建立

/** @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(); 
+0

我很抱歉,我應該提到:我正在嘗試爲依賴於Maven 2.x的maven-dependency-plugin構建一個補丁。我無法使用上面提到的Maven 3.x API。 – Gili

+1

在這種情況下,您可能需要使用MavenProjectBuilder類,即3.x ProjectBuilder的2.x等價物。你應該可以使用@component role =「org.apache.maven.project.MavenProjectBuilder」獲得一個實例,大多數其他類應該存在於2.x api中,或者有近似的近似值。 – nonVirtualThunk