I'm using Maven in the context of another build-tool (leiningen for Clojure, but this should not matter), and I would like to know how I would call a plugin like dependency:build-classpath programmatically (i.e. via the Maven-API, not via the mvn
-command).
views:
65answers:
2
A:
The Ant Maven tasks can give you an idea how to do it (DependenciesTask source). Another route may be the PomModuleDescriptorParser used by Ivy.
Thomas Jung
2010-01-27 12:03:55
+1
A:
See how org.apache.maven.plugin.testing.AbstractMojoTestCase from maven-plugin-testing-harness is implemented. Here's a code snippet from some of my tests which may be helpful.
public abstract class JAXBGenerateTest extends AbstractMojoTestCase {
static {
System.setProperty("basedir", getBaseDir().getAbsolutePath());
}
protected MavenProjectBuilder mavenProjectBuilder;
protected void setUp() throws Exception {
super.setUp();
mavenProjectBuilder = (MavenProjectBuilder) getContainer().lookup(
MavenProjectBuilder.ROLE);
}
protected static File getBaseDir() {...}
/**
* Validate the generation of a java files from purchaseorder.xsd.
*
* @throws MojoExecutionException
*/
public void testExecute() throws Exception {
final File pom = new File(getBaseDir(),
"src/test/resources/test-pom.xml");
final ArtifactRepository localRepository = new DefaultArtifactRepository( "local",
new File(getBaseDir(), "target/test-repository").toURI().toURL().toString() , new DefaultRepositoryLayout());
final MavenProject mavenProject = mavenProjectBuilder.build(pom, localRepository, null);
final XJC2Mojo generator = (XJC2Mojo) lookupMojo("generate", pom);
generator.setProject(mavenProject);
generator.setLocalRepository(localRepository);
generator.setSchemaDirectory(new File(getBaseDir(),"src/test/resources/"));
generator.setSchemaIncludes(new String[] { "*.xsd" });
generator.setBindingIncludes(new String[] { "*.xjb" });
generator.setGenerateDirectory(new File(getBaseDir(), "target/test/generated-sources"));
generator.setVerbose(true);
generator.setGeneratePackage("unittest");
generator.setRemoveOldOutput(false);
generator.execute();
}
}
lexicore
2010-03-29 18:30:02