0
如何以編程方式構造一個MavenProject實例(不是當前項目)給定其groupId,artifactId,版本等?如何查找MavenProject?
UPDATE:我正在嘗試爲http://jira.codehaus.org/browse/MDEP-322創建一個修補程序。我相信maven-dependency-plugin依賴於Maven 2.x,所以我不能使用任何Maven 3.x API。
如何以編程方式構造一個MavenProject實例(不是當前項目)給定其groupId,artifactId,版本等?如何查找MavenProject?
UPDATE:我正在嘗試爲http://jira.codehaus.org/browse/MDEP-322創建一個修補程序。我相信maven-dependency-plugin依賴於Maven 2.x,所以我不能使用任何Maven 3.x API。
這樣做的方式取決於您是要從本地存儲庫中的工件還是從硬盤上的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();
我很抱歉,我應該提到:我正在嘗試爲依賴於Maven 2.x的maven-dependency-plugin構建一個補丁。我無法使用上面提到的Maven 3.x API。 – Gili
在這種情況下,您可能需要使用MavenProjectBuilder類,即3.x ProjectBuilder的2.x等價物。你應該可以使用@component role =「org.apache.maven.project.MavenProjectBuilder」獲得一個實例,大多數其他類應該存在於2.x api中,或者有近似的近似值。 – nonVirtualThunk