java.lang.Object
org.apache.maven.plugin.AbstractMojo
All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo

@Mojo(name="xjc", threadSafe=true, defaultPhase=GENERATE_SOURCES, requiresDependencyResolution=COMPILE) public class XjcMojo extends AbstractJavaGeneratorMojo

Mojo that creates compile-scope Java source or binaries from XML schema(s) by invoking the JAXB XJC binding compiler. This implementation is tailored to use the JAXB Reference Implementation from project Kenai.

Note that the XjcMojo was completely re-implemented for the 2.x versions. Its configuration semantics and parameter set is not necessarily backwards compatible with the 1.x plugin versions. If you are upgrading from version 1.x of the plugin, read the documentation carefully.

Author:
Lennart Jörelid
See Also:
  • Field Details

    • STALE_FILENAME

      public static final String STALE_FILENAME
      The last part of the stale fileName for this XjcMojo.
      See Also:
    • STANDARD_SOURCE_DIRECTORY

      public static final String STANDARD_SOURCE_DIRECTORY

      Standard directory path (relative to basedir) searched recursively for source files (typically XSDs), unless overridden by an sources configuration element.

      See Also:
    • STANDARD_SOURCE_EXCLUDE_FILTERS

      public static final List<Filter<File>> STANDARD_SOURCE_EXCLUDE_FILTERS

      Default exclude Filters for sources, used unless overridden by an explicit configuration in the xjcSourceExcludeFilters parameter. The default values are found as follows:

           
               final List<Filter<File>> xsdTemp = new ArrayList<Filter<File>>();
               xsdTemp.addAll(AbstractJaxbMojo.STANDARD_EXCLUDE_FILTERS);
               xsdTemp.add(new PatternFileFilter(Arrays.asList("\\.xjb"), true));
               STANDARD_SOURCE_EXCLUDE_FILTERS = Collections.unmodifiableList(xsdTemp);
           
       
      See Also:
    • STANDARD_XJB_DIRECTORY

      public static final String STANDARD_XJB_DIRECTORY

      Standard directory path (relative to basedir) searched recursively for XJB files, unless overridden by an xjbSources configuration element. As explained in the JAXB specification, XJB files (JAXB Xml Binding files) are used to configure parts of the Java source generation.

      See Also:
    • STANDARD_XJB_EXCLUDE_FILTERS

      public static final List<Filter<File>> STANDARD_XJB_EXCLUDE_FILTERS

      Default List of exclude Filters for XJB files, unless overridden by providing an explicit configuration in the xjbExcludeSuffixes parameter. The default values are found as follows:

           
               final List<Filter<File>> xjbTemp = new ArrayList<Filter<File>>();
               xjbTemp.addAll(AbstractJaxbMojo.STANDARD_EXCLUDE_FILTERS);
               xjbTemp.add(new PatternFileFilter(Arrays.asList("\\.xsd"), true));
               STANDARD_XJB_EXCLUDE_FILTERS = Collections.unmodifiableList(xjbTemp);
           
       
      See Also:
  • Constructor Details

    • XjcMojo

      public XjcMojo()
  • Method Details

    • shouldExecutionBeSkipped

      protected boolean shouldExecutionBeSkipped()
      Implement this method to check if this AbstractJaxbMojo should skip executing altogether.
      Specified by:
      shouldExecutionBeSkipped in class AbstractJaxbMojo
      Returns:
      true to indicate that this AbstractJaxbMojo should bail out of its execute method.
    • getSources

      protected List<URL> getSources()
      Override this method to acquire a List holding all URLs to the JAXB sources for which this AbstractJavaGeneratorMojo should generate Java files. Sources are assumed to be in the form given by the sourceType value.
      Specified by:
      getSources in class AbstractJavaGeneratorMojo
      Returns:
      A non-null List holding URLs to sources for the XJC generation.
      See Also:
    • getSourceXJBs

      protected List<File> getSourceXJBs()
      Override this method to retrieve a list of Files to all XJB files for which this AbstractJavaGeneratorMojo should generate Java files.
      Specified by:
      getSourceXJBs in class AbstractJavaGeneratorMojo
      Returns:
      A non-null List holding binding files.
    • getStaleFileName

      protected String getStaleFileName()
      Retrieves the last name part of the stale file. The full name of the stale file will be generated by pre-pending "." + getExecution().getExecutionId() before this staleFileName.
      Specified by:
      getStaleFileName in class AbstractJaxbMojo
      Returns:
      The name of the stale file used by this AbstractJavaGeneratorMojo to detect staleness amongst its generated files.
    • getOutputDirectory

      protected File getOutputDirectory()
      Retrieves the directory where the generated files should be written to.
      Specified by:
      getOutputDirectory in class AbstractJaxbMojo
      Returns:
      the directory where the generated files should be written to.
    • getClasspath

      protected List<String> getClasspath() throws org.apache.maven.plugin.MojoExecutionException
      Retrieves the configured List of paths from which this AbstractJaxbMojo and its internal toolset (XJC or SchemaGen) should read bytecode classes.
      Specified by:
      getClasspath in class AbstractJaxbMojo
      Returns:
      the configured List of paths from which this AbstractJaxbMojo and its internal toolset (XJC or SchemaGen) should read classes.
      Throws:
      org.apache.maven.plugin.MojoExecutionException - if the classpath could not be retrieved.
    • addGeneratedSourcesToProjectSourceRoot

      protected void addGeneratedSourcesToProjectSourceRoot(String canonicalPathToOutputDirectory)
      Adds any directories containing the generated XJC classes to the appropriate Project compilation sources; either TestCompileSourceRoot or CompileSourceRoot depending on the exact Mojo implementation of this AbstractJavaGeneratorMojo.
      Specified by:
      addGeneratedSourcesToProjectSourceRoot in class AbstractJaxbMojo
    • addResource

      protected void addResource(org.apache.maven.model.Resource resource)
      Adds the supplied Resource to the project using the appropriate scope (i.e. resource or testResource) depending on the exact implementation of this AbstractJaxbMojo.
      Specified by:
      addResource in class AbstractJaxbMojo
      Parameters:
      resource - The resource to add.