package net.jangaroo.exml.mojo; import net.jangaroo.exml.compiler.Exmlc; import net.jangaroo.exml.config.ValidationMode; import org.apache.maven.model.Resource; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.project.MavenProjectHelper; import java.io.File; /** * A Mojo that generates the Xsd files for the module. Needs the same information as the exml mojo * * @goal exml-xsd * @phase generate-resources * @requiresDependencyResolution * @threadSafe */ public class ExmlXsdMojo extends ExmlCompileMojo { /** * @component */ private MavenProjectHelper projectHelper; public ExmlXsdMojo() { super(); } @Override public void execute() throws MojoExecutionException, MojoFailureException { useAllSources(); // as this goal is executed *after* the EXML compiler, there are no stale sources anymore! super.execute(); } @Override protected void executeExmlc(Exmlc exmlc) { if (exmlc.getConfig().getValidationMode() != ValidationMode.OFF) { getLog().info("validating " + exmlc.getConfig().getSourceFiles().size() + " EXML files..."); } //generate the XSD for that File xsdFile = exmlc.generateXsd(); projectHelper.attachArtifact(getProject(), "xsd", xsdFile); getLog().info("xsd-file '" + xsdFile + "' generated."); // add target/generated-resources to project's resources so XSDs are always packaged: Resource generatedResources = new Resource(); generatedResources.setDirectory(getGeneratedResourcesDirectory().getPath()); getProject().addResource(generatedResources); getLog().info("added project resource '" + generatedResources + "."); } }