Как я могу разрешить артефакт из репозитория Maven в плагине? - PullRequest
2 голосов
/ 17 сентября 2009

В предыдущем вопросе я получил ответ для загрузки артефакта из хранилища Maven. Это хорошо работает для меня, но мне нужно прочитать MavenProject для загруженного артефакта.

Как мне лучше всего прочитать MavenProject для загруженного артефакта в моем плагине?

Ответы [ 2 ]

4 голосов
/ 17 сентября 2009

Вы можете использовать MavenProjectBuilder для разрешения артефакта и чтения загруженного pom в MavenProject. Метод buildFromRepository () получает артефакт (при необходимости) из удаленных репозиториев, поэтому нет необходимости загружать его перед чтением.

Вот изменения, которые необходимо внести в предыдущий ответ для решения проекта maven:

//other imports same as previous answer
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;

/**
 * Obtain the artifact defined by the groupId, artifactId, and version from the
 * remote repository.
 * 
 * @goal bootstrap
 */
public class BootstrapAppMojo extends AbstractMojo {

    /**
     * Used to resolve the maven project.
     * 
     * @parameter expression=
     *            "${component.org.apache.maven.project.MavenProjectBuilder}"
     * @required
     * @readonly
     */
    private MavenProjectBuilder mavenProjectBuilder;

    //rest of properties same as before.

    /**
     * The target pom's version
     * 
     * @parameter expression="${bootstrapVersion}"
     * @required
     */
    private String bootstrapVersion;

    public void execute() throws MojoExecutionException, MojoFailureException {
        try {
            Artifact pomArtifact = this.factory.createArtifact(
                bootstrapGroupId, bootstrapArtifactId, bootstrapVersion,
                "", bootstrapType);

            MavenProject project = mavenProjectBuilder.buildFromRepository(
                pomArtifact, this.remoteRepositories, this.localRepository);

            //do something with the project...
        } catch (ProjectBuildingException e) {
            getLog().error("can't build bootstrapped pom", e);
        }
    }
}
2 голосов
/ 17 сентября 2009

Некоторые примеры доступны здесь: http://docs.codehaus.org/display/MAVENUSER/Mojo+Developer+Cookbook.

...