Class AbstractCompilerMojo

  • All Implemented Interfaces:
    ContextEnabled, Mojo
    Direct Known Subclasses:
    CompilerMojo, TestCompilerMojo

    public abstract class AbstractCompilerMojo
    extends AbstractMojo
    TODO: At least one step could be optimized, currently the plugin will do two scans of all the source code if the compiler has to have the entire set of sources. This is currently the case for at least the C# compiler and most likely all the other .NET compilers too.
    Since:
    2.0
    Author:
    others, Trygve Laugstøl
    • Field Detail

      • PS

        protected static final String PS
      • source

        @Parameter(property="maven.compiler.source",
                   defaultValue="1.7")
        protected String source

        The -source argument for the Java compiler.

        NOTE: Since 3.8.0 the default value has changed from 1.5 to 1.6. Since 3.9.0 the default value has changed from 1.6 to 1.7
      • target

        @Parameter(property="maven.compiler.target",
                   defaultValue="1.7")
        protected String target

        The -target argument for the Java compiler.

        NOTE: Since 3.8.0 the default value has changed from 1.5 to 1.6. Since 3.9.0 the default value has changed from 1.6 to 1.7
      • release

        @Parameter(property="maven.compiler.release")
        protected String release
        The -release argument for the Java compiler, supported since Java9
        Since:
        3.6
      • compilerArguments

        @Parameter
        @Deprecated
        protected Map<String,​String> compilerArguments
        Deprecated.
        use compilerArgs instead.

        Sets the arguments to be passed to the compiler (prepending a dash).

        This is because the list of valid arguments passed to a Java compiler varies based on the compiler version.

        Note that -J options are only passed through if fork is set to true.

        To pass -Xmaxerrs 1000 -Xlint -Xlint:-path -Averbose=true you should include the following:

         <compilerArguments>
           <Xmaxerrs>1000</Xmaxerrs>
           <Xlint/>
           <Xlint:-path/>
           <Averbose>true</Averbose>
         </compilerArguments>
         
        Since:
        2.0.1
      • compilerArgs

        @Parameter
        protected List<String> compilerArgs

        Sets the arguments to be passed to the compiler.

        Note that -J options are only passed through if fork is set to true.

        Example:
         <compilerArgs>
           <arg>-Xmaxerrs</arg>
           <arg>1000</arg>
           <arg>-Xlint</arg>
           <arg>-J-Duser.language=en_us</arg>
         </compilerArgs>
         
        Since:
        3.1
      • compilerArgument

        @Parameter
        protected String compilerArgument

        Sets the unformatted single argument string to be passed to the compiler. To pass multiple arguments such as -Xmaxerrs 1000 (which are actually two arguments) you have to use compilerArguments.

        This is because the list of valid arguments passed to a Java compiler varies based on the compiler version.

        Note that -J options are only passed through if fork is set to true.

    • Constructor Detail

      • AbstractCompilerMojo

        public AbstractCompilerMojo()
    • Method Detail

      • getSourceInclusionScanner

        protected abstract org.codehaus.plexus.compiler.util.scan.SourceInclusionScanner getSourceInclusionScanner​(int staleMillis)
      • getSourceInclusionScanner

        protected abstract org.codehaus.plexus.compiler.util.scan.SourceInclusionScanner getSourceInclusionScanner​(String inputFileEnding)
      • getClasspathElements

        protected abstract List<String> getClasspathElements()
      • getModulepathElements

        protected abstract List<String> getModulepathElements()
      • getCompileSourceRoots

        protected abstract List<String> getCompileSourceRoots()
      • preparePaths

        protected abstract void preparePaths​(Set<File> sourceFiles)
      • getOutputDirectory

        protected abstract File getOutputDirectory()
      • getSource

        protected abstract String getSource()
      • getTarget

        protected abstract String getTarget()
      • getRelease

        protected abstract String getRelease()
      • getCompilerArgument

        protected abstract String getCompilerArgument()
      • getCompilerArguments

        protected abstract Map<String,​String> getCompilerArguments()
      • getGeneratedSourcesDirectory

        protected abstract File getGeneratedSourcesDirectory()
      • getDebugFileName

        protected abstract String getDebugFileName()
      • isTestCompile

        protected boolean isTestCompile()
      • convertToCompilerResult

        protected org.codehaus.plexus.compiler.CompilerResult convertToCompilerResult​(List<org.codehaus.plexus.compiler.CompilerError> compilerErrors)
      • getRequestThreadCount

        protected int getRequestThreadCount()
        try to get thread count if a Maven 3 build, using reflection as the plugin must not be maven3 api dependent
        Returns:
        number of thread for this build or 1 if not multi-thread build
      • getBuildStartTime

        protected Date getBuildStartTime()
      • getToolchain

        protected final Toolchain getToolchain()
      • isDependencyChanged

        protected boolean isDependencyChanged()
        We just compare the timestamps of all local dependency files (inter-module dependency classpath) and the own generated classes and if we got a file which is >= the build-started timestamp, then we caught a file which got changed during this build.
        Returns:
        true if at least one single dependency has changed.
      • setTarget

        public void setTarget​(String target)
      • setRelease

        public void setRelease​(String release)