package org.codehaus.mojo.repositorytools;
import java.util.List;
import java.util.Map;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.codehaus.mojo.repositorytools.components.CLITools;
import org.codehaus.mojo.repositorytools.components.RepositoryToolsException;
import org.codehaus.mojo.repositorytools.util.RepositoryUtils;
import org.codehaus.mojo.repositorytools.validation.ArtifactValidationManager;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
/**
* This goal performs validation on an artifact in the repository. It currently
* does two types of validation:
* <ul>
* <li>Basic validation on required POM elements</li>
* <li>dependency validation: iterating over all classes and checks if imports
* are provided by one of the dependencies.</li>
* </ul>
*
* @goal validate
* @requiresProject false
* @author tom
*/
public class ValidateMojo extends AbstractMojo implements Contextualizable
{
/**
* @parameter expression="${project.remoteArtifactRepositories}"
*/
private List remoteRepositories;
/**
* @parameter expression="${localRepository}"
*/
private ArtifactRepository localRepository;
/**
* An artifact in the repository, as groupId:artifactId:version
*
* @parameter expression="${artifact}"
*/
private String artifact;
/**
* @component
* @required
* @readonly
*/
private ArtifactValidationManager validationManager;
/**
* @component
* @required
* @readonly
*/
private CLITools cliTools;
public void execute() throws MojoExecutionException, MojoFailureException
{
try
{
Artifact a = cliTools.createArtifact(artifact, "jar");
Map result = validationManager.validateArtifact(a,
remoteRepositories, localRepository);
RepositoryUtils.printValidation(getLog(), result);
}
catch (RepositoryToolsException e)
{
throw new MojoExecutionException("Error while validating", e);
}
}
public void contextualize(Context context) throws ContextException
{
context.get(PlexusConstants.PLEXUS_KEY);
}
}