package org.overture.codegen.mojocg; import java.io.File; import java.util.List; import java.util.Properties; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; /** * The VDM-to-Java code generator base mojo. * * @phase generate-sources * @requiresDependencyResolution compile */ public abstract class Vdm2JavaBaseMojo extends AbstractMojo { /** * The package of the generated classes. * * @parameter * @required */ protected String packageName; /** * The name of the folder under resources where the specification is stored. * * @parameter * @required */ protected File specificationDir; /** * Name of the directory into which the astCreatorPlugin should dump the ast files. * * @parameter property="outputDirectory" default-value="${project.build.directory}/generated-sources/javacode" */ protected File outputDirectory; /** * Dialect to use. Can be either 'sl' or 'pp' * * @parameter * @required */ protected String dialect; /** * VDM version to use to use. Can be either 'vdm10' or 'classic' * * @parameter * @required */ protected String release; /** * A flag to configure formatting of the generated code * * @parameter */ protected boolean formatCode = true; /** * Generate VDM location information for code generated constructs * * @parameter */ protected boolean printVdmLocations = false; /** * Print detailed information about the code generation process * * @parameter */ protected boolean verbose = false; /** * @parameter property="project" default-value="${project}" * @required * @readonly */ protected org.apache.maven.project.MavenProject project; /** * default-value="${project.reporting.outputDirectory}" * * @parameter */ private File projectOutputDirectory; /** * @parameter */ protected Properties delegates; /** * Modules (or classes) that should not be code generated * * @parameter */ protected List<String> modulesToSkip; /** * @parameter */ protected boolean genJUnit4Tests = false; /** * @parameter */ protected boolean separateTestCode = false; /** * VDMPP and VDMRT exclusive feature: Code generate the concurrency constructs * * @parameter */ protected boolean genConcurrency = false; protected File getProjectOutputDirectory() { if (projectOutputDirectory == null || projectOutputDirectory.length() == 0) { File output = new File(project.getFile().getParentFile(), "target"); if (!output.exists()) { output.mkdirs(); } return output; } else { return projectOutputDirectory; } } protected File getProjectJavaSrcDirectory() { File output = new File(project.getFile().getParentFile(), "src/main/java".replace('/', File.separatorChar)); return output; } public abstract void execute() throws MojoExecutionException, MojoFailureException; }