Как мне найти MavenProject? - PullRequest
       7

Как мне найти MavenProject?

0 голосов
/ 12 октября 2011

Как программно создать экземпляр MavenProject (не текущий проект) с учетом его groupId, artifactId, версии и т. Д.?

ОБНОВЛЕНИЕ : я пытаюсь создать патч для http://jira.codehaus.org/browse/MDEP-322. Я считаю, что плагин maven-dependency-plugin зависит от Maven 2.x, поэтому я не могу использовать Maven 3. x API.

1 Ответ

1 голос
/ 12 октября 2011

Как вы поступите, зависит от того, хотите ли вы создать проект из артефакта в вашем локальном хранилище или из файла 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();
...