Domanda

In una domanda precedente ho ricevuto una answer per il download di un artefatto dal repository Maven. Questo funziona bene per me, ma ho bisogno di leggere il MavenProject per l'artefatto scaricato.

Qual è il modo migliore per me di leggere MavenProject per l'artefatto scaricato nel mio plugin?

È stato utile?

Soluzione

È possibile utilizzare MavenProjectBuilder per risolvere l'artefatto e leggere il pom scaricato in un MavenProject. Il metodo buildFromRepository () otterrà l'artefatto (se necessario) dai repository remoti, quindi non è necessario scaricarlo prima di leggere.

Queste sono le modifiche necessarie alla risposta precedente per risolvere il progetto 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);
        }
    }
}

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top