/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package pt.ist.fenixframework.dml.maven;
import java.io.File;
import java.util.List;
import java.util.Map;
import org.apache.maven.artifact.DependencyResolutionRequiredException;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
/**
* Generate base main classes from the main DML files
*
* @goal test-generate-domain
* @phase generate-test-sources
* @configurator include-project-dependencies
* @requiresDependencyResolution test
* @threadSafe
*/
public class TestDmlCodeGeneratorMojo extends AbstractDmlCodeGeneratorMojo {
/**
* Maven Project
* @parameter default-value="${project}"
*/
private MavenProject mavenProject;
/**
* Set this to 'true' to bypass compilation of dml test sources.
*
* @parameter expression="${maven.test.skip}"
*/
private boolean skip;
/**
* File Source Directory
*
* @parameter default-value="${basedir}/src/test/dml"
* @readonly
* @required
*/
private File dmlSourceDirectory;
/**
* File Destination Directory
*
* @parameter default-value="${basedir}/src/test/java"
* @readonly
* @required
*/
private File sourcesDirectory;
/**
* Base File Destination Directory
*
* @parameter default-value="${project.build.directory}/generated-test-sources/dml-maven-plugin"
* @readonly
* @required
*/
private File generatedSourcesDirectory;
/**
* Code Generator Class Name
* @parameter expression="${generate-domain.codeGeneratorClassName}"
* default-value="pt.ist.fenixframework.dml.DefaultCodeGenerator"
*/
private String codeGeneratorClassName;
/**
* Package name
* @parameter expression="${test-generate-domain.packageName}"
*/
private String packageName = "";
/**
* Generate Finals Flag
* @parameter expression="${test-generate-domain.generateFinals}"
* default-value="false"
*/
private boolean generateFinals;
/**
* Verbose Mode Flag
* @parameter expression="${verbose}"
* default-value="false"
*/
private boolean verbose;
/**
* Generate Project Properties Flag
* @parameter expression="${test-generate-domain.generateProjectProperties}"
* default-value="false"
*/
private boolean generateProjectProperties;
/**
* Generic Code Generator Class Parameters
* @parameter
*/
private Map<String,String> params;
@Override
public void execute() throws MojoExecutionException {
if(skip) {
getLog().info("Not compiling test sources");
} else {
super.execute();
getMavenProject().addTestCompileSourceRoot(getGeneratedSourcesDirectory().getAbsolutePath());
}
}
@Override
protected File getDmlSourceDirectory() {
return dmlSourceDirectory;
}
@Override
protected String getCodeGeneratorClassName() {
return codeGeneratorClassName;
}
@Override
protected File getGeneratedSourcesDirectory() {
return generatedSourcesDirectory;
}
@Override
protected File getSourcesDirectory() {
return sourcesDirectory;
}
@Override
protected String getPackageName() {
return packageName;
}
@Override
protected boolean verbose() {
return verbose;
}
@Override
protected boolean generateFinals() {
return generateFinals;
}
@Override
protected boolean generateProjectProperties() {
return generateProjectProperties;
}
@Override
protected MavenProject getMavenProject() {
return mavenProject;
}
@Override
protected String getOutputDirectoryPath() {
return mavenProject.getBuild().getTestOutputDirectory();
}
@Override
protected Map<String,String> getParams() {
return params;
}
@Override
protected List<String> getClasspathElements() {
try {
return getMavenProject().getTestClasspathElements();
} catch (DependencyResolutionRequiredException e) {
getLog().error(e);
}
return null;
}
}