Class AbstractGenerateStubsMojo

All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo
Direct Known Subclasses:
GenerateStubsMojo, GenerateTestStubsMojo

public abstract class AbstractGenerateStubsMojo extends AbstractGroovyStubSourcesMojo
The base generate stubs mojo, which all generate stubs mojos extend.
Since:
1.0-beta-1
Author:
Keegan Witt
  • Field Details

    • GROOVY_5_0_0_ALPHA1

      protected static final Version GROOVY_5_0_0_ALPHA1
      Groovy 5.0.0-alpha-1 version.
    • GROOVY_4_0_21

      protected static final Version GROOVY_4_0_21
      Groovy 4.0.11 version.
    • GROOVY_4_0_16

      protected static final Version GROOVY_4_0_16
      Groovy 4.0.11 version.
    • GROOVY_4_0_11

      protected static final Version GROOVY_4_0_11
      Groovy 4.0.11 version.
    • GROOVY_4_0_6

      protected static final Version GROOVY_4_0_6
      Groovy 4.0.6 version.
    • GROOVY_4_0_2

      protected static final Version GROOVY_4_0_2
      Groovy 4.0.2 version.
    • GROOVY_4_0_0_BETA1

      protected static final Version GROOVY_4_0_0_BETA1
      Groovy 4.0.0 beta-1 version.
    • GROOVY_4_0_0_ALPHA3

      protected static final Version GROOVY_4_0_0_ALPHA3
      Groovy 4.0.0 alpha-3 version.
    • GROOVY_4_0_0_ALPHA1

      protected static final Version GROOVY_4_0_0_ALPHA1
      Groovy 4.0.0 alpha-1 version.
    • GROOVY_3_0_8

      protected static final Version GROOVY_3_0_8
      Groovy 3.0.8 version.
    • GROOVY_3_0_6

      protected static final Version GROOVY_3_0_6
      Groovy 3.0.6 version.
    • GROOVY_3_0_3

      protected static final Version GROOVY_3_0_3
      Groovy 3.0.3 version.
    • GROOVY_3_0_0_BETA2

      protected static final Version GROOVY_3_0_0_BETA2
      Groovy 3.0.0 beta-2 version.
    • GROOVY_3_0_0_BETA1

      protected static final Version GROOVY_3_0_0_BETA1
      Groovy 3.0.0 beta-1 version.
    • GROOVY_3_0_0_ALPHA4

      protected static final Version GROOVY_3_0_0_ALPHA4
      Groovy 3.0.0 alpha-4 version.
    • GROOVY_3_0_0_ALPHA2

      protected static final Version GROOVY_3_0_0_ALPHA2
      Groovy 3.0.0 alpha-2 version.
    • GROOVY_3_0_0_ALPHA1

      protected static final Version GROOVY_3_0_0_ALPHA1
      Groovy 3.0.0 alpha-1 version.
    • GROOVY_2_6_0_ALPHA4

      protected static final Version GROOVY_2_6_0_ALPHA4
      Groovy 2.6.0 alpha-4 version.
    • GROOVY_2_6_0_ALPHA1

      protected static final Version GROOVY_2_6_0_ALPHA1
      Groovy 2.6.0 alpha-1 version.
    • GROOVY_2_5_7

      protected static final Version GROOVY_2_5_7
      Groovy 2.5.7 version.
    • GROOVY_2_5_3

      protected static final Version GROOVY_2_5_3
      Groovy 2.5.3 version.
    • GROOVY_2_3_3

      protected static final Version GROOVY_2_3_3
      Groovy 2.3.3 version.
    • GROOVY_2_1_3

      protected static final Version GROOVY_2_1_3
      Groovy 2.1.3 version.
    • GROOVY_1_9_0_BETA1

      protected static final Version GROOVY_1_9_0_BETA1
      Groovy 2.9.0 beta-1 version.
    • GROOVY_1_9_0_BETA3

      protected static final Version GROOVY_1_9_0_BETA3
      Groovy 1.9.0 beta-3 version.
    • GROOVY_1_8_2

      protected static final Version GROOVY_1_8_2
      Groovy 1.8.2 version.
    • GROOVY_1_8_3

      protected static final Version GROOVY_1_8_3
      Groovy 1.8.3 version.
    • sourceEncoding

      @Parameter(defaultValue="${project.build.sourceEncoding}") protected String sourceEncoding
      The encoding of source files.
    • targetBytecode

      @Parameter(property="maven.compiler.target", defaultValue="1.8") protected String targetBytecode
      The Groovy compiler bytecode compatibility. One of
      • 1.4 (or 4)
      • 1.5 (or 5)
      • 1.6 (or 6)
      • 1.7 (or 7)
      • 1.8 (or 8)
      • 9 (or 1.9)
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      Using 1.6 (or 6) or 1.7 (or 7) requires Groovy >= 2.1.3. Using 1.8 (or 8) requires Groovy >= 2.3.3. Using 9 (or 1.9) requires Groovy >= 2.5.3, or Groovy >= 2.6.0 alpha 4, or Groovy >= 3.0.0 alpha 2. Using 9 (or 1.9) with invokedynamic requires Groovy >= 2.5.3, or Groovy >= 3.0.0 alpha 2, but not any 2.6 versions. Using 10, 11, or 12 requires Groovy >= 2.5.3, or Groovy >= 3.0.0 alpha 4, but not any 2.6 versions. Using 13 requires Groovy >= 2.5.7, or Groovy >= 3.0.0-beta-1, but not any 2.6 versions. Using 14 requires Groovy >= 3.0.0 beta-2. Using 15 requires Groovy >= 3.0.3. Using 16 requires Groovy >= 3.0.6. Using 17 requires Groovy >= 3.0.8 or Groovy > 4.0.0-alpha-3. Using 18 requires Groovy > 4.0.0-beta-1. Using 19 requires Groovy > 4.0.2. Using 20 requires Groovy > 4.0.6. Using 21 requires Groovy > 4.0.11. Using 22 requires Groovy > 4.0.16. Using 23 requires Groovy > 4.0.21.
      Since:
      1.0-beta-3
    • skipBytecodeCheck

      @Parameter(property="skipBytecodeCheck", defaultValue="false") protected boolean skipBytecodeCheck
      Whether to check that the version of Groovy used is able to use the requested targetBytecode.
      Since:
      1.9.0
    • debug

      @Parameter(defaultValue="false") protected boolean debug
      Whether Groovy compiler should be set to debug.
    • verbose

      @Parameter(defaultValue="false") protected boolean verbose
      Whether Groovy compiler should be set to verbose.
    • warningLevel

      @Parameter(defaultValue="1") protected int warningLevel
      Groovy compiler warning level. Should be one of:
      0
      None
      1
      Likely Errors
      2
      Possible Errors
      3
      Paranoia
    • tolerance

      @Parameter(defaultValue="0") protected int tolerance
      Groovy compiler error tolerance (the number of non-fatal errors (per unit) that should be tolerated before compilation is aborted).
    • includeClasspath

      @Parameter(defaultValue="PROJECT_ONLY") protected IncludeClasspath includeClasspath
      What classpath to include. One of
      • PROJECT_ONLY
      • PROJECT_AND_PLUGIN
      • PLUGIN_ONLY
      Uses the same scope as the required dependency resolution of this mojo. Use only if you know what you're doing.
      Since:
      1.8.0
  • Constructor Details

    • AbstractGenerateStubsMojo

      public AbstractGenerateStubsMojo()
  • Method Details

    • doStubGeneration

      protected void doStubGeneration(Set<File> stubSources, List<?> classpath, File outputDirectory) throws ClassNotFoundException, InvocationTargetException, IllegalAccessException, InstantiationException, MalformedURLException
      Performs the stub generation on the specified source files.
      Parameters:
      stubSources - the sources to perform stub generation on
      classpath - The classpath to use for compilation
      outputDirectory - the directory to write the stub files to
      Throws:
      ClassNotFoundException - when a class needed for stub generation cannot be found
      InstantiationException - when a class needed for stub generation cannot be instantiated
      IllegalAccessException - when a method needed for stub generation cannot be accessed
      InvocationTargetException - when a reflection invocation needed for stub generation cannot be completed
      MalformedURLException - when a classpath element provides a malformed URL
    • setupCompilerConfiguration

      protected Object setupCompilerConfiguration(File outputDirectory, Class<?> compilerConfigurationClass) throws InvocationTargetException, IllegalAccessException, InstantiationException
      Sets up the CompilerConfiguration to use for stub generation.
      Parameters:
      outputDirectory - the directory to write the stub files to
      compilerConfigurationClass - the CompilerConfiguration class
      Returns:
      the CompilerConfiguration to use for stub generation
      Throws:
      InstantiationException - when a class needed for stub generation cannot be instantiated
      IllegalAccessException - when a method needed for stub generation cannot be accessed
      InvocationTargetException - when a reflection invocation needed for stub generation cannot be completed
    • addGroovySources

      protected void addGroovySources(Set<File> stubSources, Class<?> compilerConfigurationClass, Class<?> javaStubCompilationUnitClass, Object compilerConfiguration, Object javaStubCompilationUnit) throws InvocationTargetException, IllegalAccessException
      Adds the Groovy sources to the CompilationUnit.
      Parameters:
      stubSources - the sources to perform stub generation on
      compilerConfigurationClass - the CompilerConfiguration class
      javaStubCompilationUnitClass - the JavaStubCompilationUnit class
      compilerConfiguration - the CompilerConfiguration to use for stub generation
      javaStubCompilationUnit - the JavaStubCompilationUnit to use for stub generation
      Throws:
      IllegalAccessException - when a method needed for stub generation cannot be accessed
      InvocationTargetException - when a reflection invocation needed for stub generation cannot be completed
    • supportsSettingExtensions

      protected boolean supportsSettingExtensions()
      Determines whether the version of Groovy supports stub generation.
      Returns:
      true if the version of Groovy supports stub generation, false otherwise
    • logGeneratedStubs

      protected void logGeneratedStubs(File outputDirectory)
      Logs the stubs that have been generated.
      Parameters:
      outputDirectory - the output directory for the stubs
    • resetStubModifiedDates

      protected void resetStubModifiedDates(Set<File> stubs)
      This is a fix for ... It modifies the dates of the created stubs to 1/1/1970, ensuring that the Java compiler will not overwrite perfectly good compiled Groovy just because it has a newer source stub. Basically, this prevents the stubs from causing a side effect with the Java compiler, but still allows stubs to work with JavaDoc.
      Parameters:
      stubs - the files on which to reset the modified date
    • verifyGroovyVersionSupportsTargetBytecode

      protected void verifyGroovyVersionSupportsTargetBytecode()
      Throws an exception if targetBytecode is not supported with this version of Groovy. That is, when Groovy added the option to org.codehaus.groovy.control.CompilerConfiguration and used it in org.codehaus.groovy.classgen.asm.WriterController.
    • translateJavacTargetToTargetBytecode

      protected static String translateJavacTargetToTargetBytecode(String targetBytecode)