Class Groovyc

  • All Implemented Interfaces:
    java.lang.Cloneable, SelectorContainer

    public class Groovyc
    extends MatchingTask
    Compiles Groovy source files using Ant.

    Typically involves using Ant from the command-line and an Ant build file such as:

     <?xml version="1.0"?>
     <project name="MyGroovyBuild" default="compile">
       <property name="groovy.home" value="/Path/To/Groovy"/>
       <property name="groovy.version" value="X.Y.Z"/>
       <path id="groovy.classpath">
         <fileset dir="${groovy.home}/embeddable">
           <include name="groovy-all-${groovy.version}.jar" />
         </fileset>
       </path>
       <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="groovy.classpath"/>
    
       <target name="compile" description="compile groovy sources">
         <groovyc srcdir="src" listfiles="true" classpathref="groovy.classpath"/>
       </target>
     </project>
     

    This task can take the following arguments:

    • srcdir
    • scriptExtension
    • targetBytecode
    • destdir
    • sourcepath
    • sourcepathRef
    • classpath
    • classpathRef
    • listfiles
    • failonerror
    • proceed
    • memoryInitialSize
    • memoryMaximumSize
    • encoding
    • verbose
    • includeantruntime
    • includejavaruntime
    • fork
    • javaHome
    • executable
    • updatedProperty
    • errorProperty
    • includeDestClasses
    • jointCompilationOptions
    • stacktrace
    • indy
    • scriptBaseClass
    • stubdir
    • keepStubs
    • forceLookupUnnamedFiles
    • configscript
    And these nested tasks:
    • javac
    Of these arguments, the srcdir and destdir are required.

    When this task executes, it will recursively scan srcdir and destdir looking for Groovy source files to compile. This task makes its compile decision based on timestamp.

    A more elaborate build file showing joint compilation:

     <?xml version="1.0"?>
     <project name="MyJointBuild" default="compile">
       <property name="groovy.home" value="/Path/To/Groovy"/>
       <property name="groovy.version" value="X.Y.Z"/>
    
       <path id="groovy.classpath">
         <fileset dir="${groovy.home}/embeddable">
           <include name="groovy-all-${groovy.version}.jar" />
         </fileset>
       </path>
    
       <target name="clean" description="remove all built files">
         <delete dir="classes" />
       </target>
    
       <target name="compile" depends="init" description="compile java and groovy sources">
         <mkdir dir="classes" />
         <groovyc destdir="classes" srcdir="src" listfiles="true" keepStubs="true" stubdir="stubs">
           <javac debug="on" deprecation="true"/>
           <classpath>
             <fileset dir="classes"/>
             <path refid="groovy.classpath"/>
           </classpath>
         </groovyc>
       </target>
    
       <target name="init">
         <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="groovy.classpath"/>
       </target>
     </project>
     

    Based heavily on the Javac implementation in Ant.

    Can also be used from AntBuilder to allow the build file to be scripted in Groovy.

    Author:
    James Strachan, Hein Meling, Russel Winder, Danno Ferrin, Paul King
    • Field Detail

      • failOnError

        protected boolean failOnError
      • listFiles

        protected boolean listFiles
      • compileList

        protected java.io.File[] compileList
    • Constructor Detail

      • Groovyc

        public Groovyc()
    • Method Detail

      • createSrc

        public Path createSrc()
        Adds a path for source compilation.
        Returns:
        a nested src element.
      • recreateSrc

        protected Path recreateSrc()
        Recreate src.
        Returns:
        a nested src element.
      • setSrcdir

        public void setSrcdir​(Path srcDir)
        Set the source directories to find the source Java files.
        Parameters:
        srcDir - the source directories as a path
      • getSrcdir

        public Path getSrcdir()
        Gets the source dirs to find the source java files.
        Returns:
        the source directories as a path
      • setScriptExtension

        public void setScriptExtension​(java.lang.String scriptExtension)
        Set the extension to use when searching for Groovy source files. Accepts extensions in the form *.groovy, .groovy or groovy
        Parameters:
        scriptExtension - the extension of Groovy source files
      • getScriptExtension

        public java.lang.String getScriptExtension()
        Get the extension to use when searching for Groovy source files.
        Returns:
        the extension of Groovy source files
      • setTargetBytecode

        public void setTargetBytecode​(java.lang.String version)
        Sets the bytecode compatibility mode
        Parameters:
        version - the bytecode compatibility mode
      • getTargetBytecode

        public java.lang.String getTargetBytecode()
        Retrieves the compiler bytecode compatibility mode.
        Returns:
        bytecode compatibility mode. Can be either 1.5 or 1.4.
      • setDestdir

        public void setDestdir​(java.io.File destDir)
        Set the destination directory into which the Java source files should be compiled.
        Parameters:
        destDir - the destination director
      • getDestdir

        public java.io.File getDestdir()
        Gets the destination directory into which the java source files should be compiled.
        Returns:
        the destination directory
      • setSourcepath

        public void setSourcepath​(Path sourcepath)
        Set the sourcepath to be used for this compilation.
        Parameters:
        sourcepath - the source path
      • getSourcepath

        public Path getSourcepath()
        Gets the sourcepath to be used for this compilation.
        Returns:
        the source path
      • createSourcepath

        public Path createSourcepath()
        Adds a path to sourcepath.
        Returns:
        a sourcepath to be configured
      • setSourcepathRef

        public void setSourcepathRef​(Reference r)
        Adds a reference to a source path defined elsewhere.
        Parameters:
        r - a reference to a source path
      • setClasspath

        public void setClasspath​(Path classpath)
        Set the classpath to be used for this compilation.
        Parameters:
        classpath - an Ant Path object containing the compilation classpath.
      • getClasspath

        public Path getClasspath()
        Gets the classpath to be used for this compilation.
        Returns:
        the class path
      • createClasspath

        public Path createClasspath()
        Adds a path to the classpath.
        Returns:
        a class path to be configured
      • setClasspathRef

        public void setClasspathRef​(Reference r)
        Adds a reference to a classpath defined elsewhere.
        Parameters:
        r - a reference to a classpath
      • setListfiles

        public void setListfiles​(boolean list)
        If true, list the source files being handed off to the compiler. Default is false.
        Parameters:
        list - if true list the source files
      • getListfiles

        public boolean getListfiles()
        Get the listfiles flag.
        Returns:
        the listfiles flag
      • setFailonerror

        public void setFailonerror​(boolean fail)
        Indicates whether the build will continue even if there are compilation errors; defaults to true.
        Parameters:
        fail - if true halt the build on failure
      • setProceed

        public void setProceed​(boolean proceed)
        Parameters:
        proceed - inverse of failonerror
      • getFailonerror

        public boolean getFailonerror()
        Gets the failonerror flag.
        Returns:
        the failonerror flag
      • setMemoryInitialSize

        public void setMemoryInitialSize​(java.lang.String memoryInitialSize)
        The initial size of the memory for the underlying VM if javac is run externally; ignored otherwise. Defaults to the standard VM memory setting. (Examples: 83886080, 81920k, or 80m)
        Parameters:
        memoryInitialSize - string to pass to VM
      • getMemoryInitialSize

        public java.lang.String getMemoryInitialSize()
        Gets the memoryInitialSize flag.
        Returns:
        the memoryInitialSize flag
      • setMemoryMaximumSize

        public void setMemoryMaximumSize​(java.lang.String memoryMaximumSize)
        The maximum size of the memory for the underlying VM if javac is run externally; ignored otherwise. Defaults to the standard VM memory setting. (Examples: 83886080, 81920k, or 80m)
        Parameters:
        memoryMaximumSize - string to pass to VM
      • getMemoryMaximumSize

        public java.lang.String getMemoryMaximumSize()
        Gets the memoryMaximumSize flag.
        Returns:
        the memoryMaximumSize flag
      • setEncoding

        public void setEncoding​(java.lang.String encoding)
        Sets the file encoding for generated files.
        Parameters:
        encoding - the file encoding to be used
      • getEncoding

        public java.lang.String getEncoding()
        Returns the encoding to be used when creating files.
        Returns:
        the file encoding to use
      • setVerbose

        public void setVerbose​(boolean verbose)
        Enable verbose compiling which will display which files are being compiled. Default is false.
      • getVerbose

        public boolean getVerbose()
        Gets the verbose flag.
        Returns:
        the verbose flag
      • setIncludeantruntime

        public void setIncludeantruntime​(boolean include)
        If true, includes Ant's own classpath in the classpath. Default is true. If setting to false and using groovyc in conjunction with AntBuilder you might need to explicitly add the Groovy jar(s) to the groovyc classpath using a nested classpath task.
        Parameters:
        include - if true, includes Ant's own classpath in the classpath
      • getIncludeantruntime

        public boolean getIncludeantruntime()
        Gets whether or not the ant classpath is to be included in the classpath.
        Returns:
        whether or not the ant classpath is to be included in the classpath
      • setIncludejavaruntime

        public void setIncludejavaruntime​(boolean include)
        If true, includes the Java runtime libraries in the classpath. Default is false.
        Parameters:
        include - if true, includes the Java runtime libraries in the classpath
      • getIncludejavaruntime

        public boolean getIncludejavaruntime()
        Gets whether or not the java runtime should be included in this task's classpath.
        Returns:
        the includejavaruntime attribute
      • setFork

        public void setFork​(boolean f)
        If true forks the Groovy compiler. Default is false.
        Parameters:
        f - "true|false|on|off|yes|no"
      • setJavaHome

        public void setJavaHome​(java.io.File home)
        The JDK Home to use when forked. Ignored if "executable" is specified.
        Parameters:
        home - the java.home value to use, default is the current JDK's home
      • setExecutable

        public void setExecutable​(java.lang.String forkExecPath)
        Sets the name of the java executable to use when invoking the compiler in forked mode, ignored otherwise.
        Parameters:
        forkExecPath - the name of the executable
        Since:
        Groovy 1.8.7
      • getExecutable

        public java.lang.String getExecutable()
        The value of the executable attribute, if any.
        Returns:
        the name of the java executable
        Since:
        Groovy 1.8.7
      • setUpdatedProperty

        public void setUpdatedProperty​(java.lang.String updatedProperty)
        The property to set on compilation success. This property will not be set if the compilation fails, or if there are no files to compile.
        Parameters:
        updatedProperty - the property name to use.
      • setErrorProperty

        public void setErrorProperty​(java.lang.String errorProperty)
        The property to set on compilation failure. This property will be set if the compilation fails.
        Parameters:
        errorProperty - the property name to use.
      • setIncludeDestClasses

        public void setIncludeDestClasses​(boolean includeDestClasses)
        This property controls whether to include the destination classes directory in the classpath given to the compiler. The default value is "true".
        Parameters:
        includeDestClasses - the value to use.
      • isIncludeDestClasses

        public boolean isIncludeDestClasses()
        Get the value of the includeDestClasses property.
        Returns:
        the value.
      • getTaskSuccess

        public boolean getTaskSuccess()
        Get the result of the groovyc task (success or failure).
        Returns:
        true if compilation succeeded, or was not necessary, false if the compilation failed.
      • addConfiguredJavac

        public void addConfiguredJavac​(Javac javac)
        Add the configured nested javac task if present to initiate joint compilation.
      • setStacktrace

        public void setStacktrace​(boolean stacktrace)
        Enable compiler to report stack trace information if a problem occurs during compilation. Default is false.
      • setIndy

        public void setIndy​(boolean useIndy)
        Set the indy flag.
        Parameters:
        useIndy - the indy flag
      • getIndy

        public boolean getIndy()
        Get the value of the indy flag.
        Returns:
        if to use indy
      • setScriptBaseClass

        public void setScriptBaseClass​(java.lang.String scriptBaseClass)
        Set the base script class name for the scripts (must derive from Script)
        Parameters:
        scriptBaseClass - Base class name for scripts (must derive from Script)
      • getScriptBaseClass

        public java.lang.String getScriptBaseClass()
        Get the base script class name for the scripts (must derive from Script)
        Returns:
        Base class name for scripts (must derive from Script)
      • getConfigscript

        public java.lang.String getConfigscript()
        Get the configuration file used to customize the compilation configuration.
        Returns:
        a path to a configuration script
      • setConfigscript

        public void setConfigscript​(java.lang.String configscript)
        Set the configuration file used to customize the compilation configuration.
        Parameters:
        configscript - a path to a configuration script
      • setStubdir

        public void setStubdir​(java.io.File stubDir)
        Set the stub directory into which the Java source stub files should be generated. The directory need not exist and will not be deleted automatically - though its contents will be cleared unless 'keepStubs' is true. Ignored when forked.
        Parameters:
        stubDir - the stub directory
      • getStubdir

        public java.io.File getStubdir()
        Gets the stub directory into which the Java source stub files should be generated
        Returns:
        the stub directory
      • setKeepStubs

        public void setKeepStubs​(boolean keepStubs)
        Set the keepStubs flag. Defaults to false. Set to true for debugging. Ignored when forked.
        Parameters:
        keepStubs - should stubs be retained
      • getKeepStubs

        public boolean getKeepStubs()
        Gets the keepStubs flag.
        Returns:
        the keepStubs flag
      • setForceLookupUnnamedFiles

        public void setForceLookupUnnamedFiles​(boolean forceLookupUnnamedFiles)
        Set the forceLookupUnnamedFiles flag. Defaults to false. The Groovyc Ant task is frequently used in the context of a build system that knows the complete list of source files to be compiled. In such a context, it is wasteful for the Groovy compiler to go searching the classpath when looking for source files and hence by default the Groovyc Ant task calls the compiler in a special mode with such searching turned off. If you wish the compiler to search for source files then you need to set this flag to true.
        Parameters:
        forceLookupUnnamedFiles - should unnamed source files be searched for on the classpath
      • getForceLookupUnnamedFiles

        public boolean getForceLookupUnnamedFiles()
        Gets the forceLookupUnnamedFiles flag.
        Returns:
        the forceLookupUnnamedFiles flag
      • resetFileLists

        protected void resetFileLists()
        Clear the list of files to be compiled and copied.
      • scanDir

        protected void scanDir​(java.io.File srcDir,
                               java.io.File destDir,
                               java.lang.String[] files)
        Scans the directory looking for source files to be compiled. The results are returned in the class variable compileList
        Parameters:
        srcDir - The source directory
        destDir - The destination directory
        files - An array of filenames
      • addToCompileList

        protected void addToCompileList​(java.io.File[] newFiles)
      • getFileList

        public java.io.File[] getFileList()
        Gets the list of files to be compiled.
        Returns:
        the list of files as an array
      • compile

        protected void compile()