package pt.ist.fenixframework.dml.maven; import java.io.File; import java.net.URLClassLoader; import java.util.List; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; import pt.ist.fenixframework.core.FullPostProcessDomainClasses; public abstract class AbstractDmlPostProcessorMojo extends AbstractMojo { protected abstract MavenProject getMavenProject(); protected abstract File getDmlSourceDirectory(); protected abstract File getClassesDirectory(); protected abstract String getCodeGeneratorClassName(); protected abstract boolean verbose(); protected abstract List<String> getClasspathElements(); @Override public void execute() throws MojoExecutionException { if (getMavenProject().getArtifact().getType().equals("pom")) { getLog().info("Cannot post process domain for pom projects"); return; } try { URLClassLoader loader = DmlMojoUtils.augmentClassLoader(getLog(), getClasspathElements()); FullPostProcessDomainClasses.apply(getMavenProject().getArtifactId(), this.getClassesDirectory(), loader); } catch (Exception e) { getLog().error(e); } } }