Class Groovyc
- java.lang.Object
-
- org.apache.tools.ant.ProjectComponent
-
- org.apache.tools.ant.Task
-
- org.apache.tools.ant.taskdefs.MatchingTask
-
- org.codehaus.groovy.ant.Groovyc
-
- All Implemented Interfaces:
java.lang.Cloneable
,org.apache.tools.ant.types.selectors.SelectorContainer
public class Groovyc extends org.apache.tools.ant.taskdefs.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" location="/Path/To/Groovy"/> <property name="groovy.version" value="X.Y.Z"/> <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc"> <classpath> <fileset file="${groovy.home}/lib/groovy-${groovy.version}.jar"/> <fileset file="${groovy.home}/lib/groovy-ant-${groovy.version}.jar"/> </classpath> </taskdef> <target name="compile" description="compile groovy sources"> <groovyc srcdir="src" destdir="bin" fork="true" listfiles="true" includeantruntime="false"/> <classpath> <fileset dir="${groovy.home}/lib" includes="groovy-*${groovy.version}.jar" excludes="groovy-ant-${groovy.version}.jar"/> </classpath> </groovyc> </target> </project>
This task can take the following arguments:
- srcdir
- destdir
- sourcepath
- sourcepathRef
- classpath
- classpathRef
- scriptExtension
- targetBytecode
- listfiles
- failonerror
- proceed
- memoryInitialSize
- memoryMaximumSize
- encoding
- verbose
- includeantruntime
- includejavaruntime
- fork
- javaHome
- executable
- updatedProperty
- errorProperty
- includeDestClasses
- jointCompilationOptions
- stacktrace
- indy
- scriptBaseClass
- stubdir
- keepStubs
- forceLookupUnnamedFiles
- configscript
- parameters
- javac
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" location="/Path/To/Groovy"/> <property name="groovy.version" value="X.Y.Z"/> <path id="classpath.main"> <fileset dir="${groovy.home}/lib"> <include name="groovy-*${groovy.version}.jar"/> <exclude name="groovy-ant-${groovy.version}.jar"/> </fileset> </path> <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc"> <classpath> <fileset file="${groovy.home}/lib/groovy-${groovy.version}.jar"/> <fileset file="${groovy.home}/lib/groovy-ant-${groovy.version}.jar"/> </classpath> </taskdef> <target name="clean"> <delete dir="bin" failonerror="false"/> </target> <target name="compile" depends="clean" description="compile java and groovy sources"> <mkdir dir="bin"/> <groovyc srcdir="src" destdir="bin" stubdir="stubs" keepStubs="true" fork="true" includeantruntime="false" classpathref="classpath.main"> <javac debug="true" source="1.8" target="1.8"/> </groovyc> </target> </project>
Based on the implementation of the Javac task in Apache Ant.
Can also be used from
AntBuilder
to allow the build file to be scripted in Groovy.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.io.File[]
compileList
protected CompilerConfiguration
configuration
protected boolean
failOnError
protected boolean
listFiles
-
Constructor Summary
Constructors Constructor Description Groovyc()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addConfiguredJavac(org.apache.tools.ant.taskdefs.Javac javac)
Add the configured nested javac task if present to initiate joint compilation.protected void
addToCompileList(java.io.File[] newFiles)
protected GroovyClassLoader
buildClassLoaderFor()
protected void
checkParameters()
protected void
compile()
org.apache.tools.ant.types.Path
createClasspath()
Adds a path to the classpath.org.apache.tools.ant.types.Path
createSourcepath()
Adds a path to sourcepath.org.apache.tools.ant.types.Path
createSrc()
Adds a path for source compilation.void
execute()
Executes the task.org.apache.tools.ant.types.Path
getClasspath()
Gets the classpath to be used for this compilation.java.lang.String
getConfigscript()
Get the configuration file used to customize the compilation configuration.java.io.File
getDestdir()
Gets the destination directory into which the java source files should be compiled.java.lang.String
getEncoding()
Returns the encoding to be used when creating files.java.lang.String
getExecutable()
The value of the executable attribute, if any.boolean
getFailonerror()
Gets the failonerror flag.java.io.File[]
getFileList()
Gets the list of files to be compiled.boolean
getForceLookupUnnamedFiles()
Gets the forceLookupUnnamedFiles flag.boolean
getIncludeantruntime()
Gets whether or not the ant classpath is to be included in the classpath.boolean
getIncludejavaruntime()
Gets whether or not the java runtime should be included in this task's classpath.boolean
getIndy()
Get the value of the indy flag.boolean
getKeepStubs()
Gets the keepStubs flag.boolean
getListfiles()
Get the listfiles flag.java.lang.String
getMemoryInitialSize()
Gets the memoryInitialSize flag.java.lang.String
getMemoryMaximumSize()
Gets the memoryMaximumSize flag.boolean
getParameters()
Returns true if parameter metadata generation has been enabled.boolean
getPreviewFeatures()
Returns true if preview features has been enabled.java.lang.String
getScriptBaseClass()
Get the base script class name for the scripts (must derive from Script)java.lang.String
getScriptExtension()
Get the extension to use when searching for Groovy source files.org.apache.tools.ant.types.Path
getSourcepath()
Gets the sourcepath to be used for this compilation.org.apache.tools.ant.types.Path
getSrcdir()
Gets the source dirs to find the source java files.java.io.File
getStubdir()
Gets the stub directory into which the Java source stub files should be generatedjava.lang.String
getTargetBytecode()
Retrieves the compiler bytecode compatibility level.boolean
getTaskSuccess()
Get the result of the groovyc task (success or failure).boolean
getVerbose()
Gets the verbose flag.boolean
isIncludeDestClasses()
Get the value of the includeDestClasses property.protected CompilationUnit
makeCompileUnit()
Deprecated.This method is not in use anymore.protected CompilationUnit
makeCompileUnit(GroovyClassLoader loader)
protected org.apache.tools.ant.types.Path
recreateSrc()
Recreate src.protected void
resetFileLists()
Clear the list of files to be compiled and copied.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.void
setClasspath(org.apache.tools.ant.types.Path classpath)
Set the classpath to be used for this compilation.void
setClasspathRef(org.apache.tools.ant.types.Reference r)
Adds a reference to a classpath defined elsewhere.void
setConfigscript(java.lang.String configscript)
Set the configuration file used to customize the compilation configuration.void
setDestdir(java.io.File destDir)
Set the destination directory into which the Java source files should be compiled.void
setEncoding(java.lang.String encoding)
Sets the file encoding for generated files.void
setErrorProperty(java.lang.String errorProperty)
The property to set on compilation failure.void
setExecutable(java.lang.String forkExecPath)
Sets the name of the java executable to use when invoking the compiler in forked mode, ignored otherwise.void
setFailonerror(boolean fail)
Indicates whether the build will continue even if there are compilation errors; defaults to true.void
setForceLookupUnnamedFiles(boolean forceLookupUnnamedFiles)
Set the forceLookupUnnamedFiles flag.void
setFork(boolean f)
If true forks the Groovy compiler.void
setIncludeantruntime(boolean include)
If true, includes Ant's own classpath in the classpath.void
setIncludeDestClasses(boolean includeDestClasses)
This property controls whether to include the destination classes directory in the classpath given to the compiler.void
setIncludejavaruntime(boolean include)
If true, includes the Java runtime libraries in the classpath.void
setIndy(boolean useIndy)
Set the indy flag.void
setJavaHome(java.io.File home)
The JDK Home to use when forked.void
setKeepStubs(boolean keepStubs)
Set the keepStubs flag.void
setListfiles(boolean list)
If true, list the source files being handed off to the compiler.void
setMemoryInitialSize(java.lang.String memoryInitialSize)
The initial size of the memory for the underlying VM if javac is run externally; ignored otherwise.void
setMemoryMaximumSize(java.lang.String memoryMaximumSize)
The maximum size of the memory for the underlying VM if javac is run externally; ignored otherwise.void
setParameters(boolean parameters)
If true, generates metadata for reflection on method parameter names (jdk8+ only).void
setPreviewFeatures(boolean previewFeatures)
If true, enable preview Java features (JEP 12) (jdk12+ only).void
setProceed(boolean proceed)
void
setScriptBaseClass(java.lang.String scriptBaseClass)
Set the base script class name for the scripts (must derive from Script)void
setScriptExtension(java.lang.String scriptExtension)
Set the extension to use when searching for Groovy source files.void
setSourcepath(org.apache.tools.ant.types.Path sourcepath)
Set the sourcepath to be used for this compilation.void
setSourcepathRef(org.apache.tools.ant.types.Reference r)
Adds a reference to a source path defined elsewhere.void
setSrcdir(org.apache.tools.ant.types.Path srcDir)
Set the source directories to find the source Java files.void
setStacktrace(boolean stacktrace)
Enable compiler to report stack trace information if a problem occurs during compilation.void
setStubdir(java.io.File stubDir)
Set the stub directory into which the Java source stub files should be generated.void
setTargetBytecode(java.lang.String version)
Sets the bytecode compatibility level.void
setUpdatedProperty(java.lang.String updatedProperty)
The property to set on compilation success.void
setVerbose(boolean verbose)
Enable verbose compiling which will display which files are being compiled.-
Methods inherited from class org.apache.tools.ant.taskdefs.MatchingTask
add, addAnd, addContains, addContainsRegexp, addCustom, addDate, addDepend, addDepth, addDifferent, addFilename, addMajority, addModified, addNone, addNot, addOr, addPresent, addSelector, addSize, addType, appendSelector, createExclude, createExcludesFile, createInclude, createIncludesFile, createPatternSet, getDirectoryScanner, getImplicitFileSet, getSelectors, hasSelectors, selectorCount, selectorElements, setCaseSensitive, setDefaultexcludes, setExcludes, setExcludesfile, setFollowSymlinks, setIncludes, setIncludesfile, setProject, XsetIgnore, XsetItems
-
Methods inherited from class org.apache.tools.ant.Task
bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType
-
-
-
-
Field Detail
-
failOnError
protected boolean failOnError
-
listFiles
protected boolean listFiles
-
compileList
protected java.io.File[] compileList
-
configuration
protected CompilerConfiguration configuration
-
-
Method Detail
-
createSrc
public org.apache.tools.ant.types.Path createSrc()
Adds a path for source compilation.- Returns:
- a nested src element.
-
recreateSrc
protected org.apache.tools.ant.types.Path recreateSrc()
Recreate src.- Returns:
- a nested src element.
-
setSrcdir
public void setSrcdir(org.apache.tools.ant.types.Path srcDir)
Set the source directories to find the source Java files.- Parameters:
srcDir
- the source directories as a path
-
getSrcdir
public org.apache.tools.ant.types.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 level. The parameter can take one of the values inCompilerConfiguration.ALLOWED_JDKS
.- Parameters:
version
- the bytecode compatibility level
-
getTargetBytecode
public java.lang.String getTargetBytecode()
Retrieves the compiler bytecode compatibility level.- Returns:
- bytecode compatibility level. Can be one of the values in
CompilerConfiguration.ALLOWED_JDKS
.
-
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(org.apache.tools.ant.types.Path sourcepath)
Set the sourcepath to be used for this compilation.- Parameters:
sourcepath
- the source path
-
getSourcepath
public org.apache.tools.ant.types.Path getSourcepath()
Gets the sourcepath to be used for this compilation.- Returns:
- the source path
-
createSourcepath
public org.apache.tools.ant.types.Path createSourcepath()
Adds a path to sourcepath.- Returns:
- a sourcepath to be configured
-
setSourcepathRef
public void setSourcepathRef(org.apache.tools.ant.types.Reference r)
Adds a reference to a source path defined elsewhere.- Parameters:
r
- a reference to a source path
-
setClasspath
public void setClasspath(org.apache.tools.ant.types.Path classpath)
Set the classpath to be used for this compilation.- Parameters:
classpath
- an Ant Path object containing the compilation classpath.
-
getClasspath
public org.apache.tools.ant.types.Path getClasspath()
Gets the classpath to be used for this compilation.- Returns:
- the class path
-
createClasspath
public org.apache.tools.ant.types.Path createClasspath()
Adds a path to the classpath.- Returns:
- a class path to be configured
-
setClasspathRef
public void setClasspathRef(org.apache.tools.ant.types.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(org.apache.tools.ant.taskdefs.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
-
setParameters
public void setParameters(boolean parameters)
If true, generates metadata for reflection on method parameter names (jdk8+ only). Defaults to false.- Parameters:
parameters
- set to true to generate metadata.
-
getParameters
public boolean getParameters()
Returns true if parameter metadata generation has been enabled.
-
setPreviewFeatures
public void setPreviewFeatures(boolean previewFeatures)
If true, enable preview Java features (JEP 12) (jdk12+ only).- Parameters:
previewFeatures
- set to true to enable preview features
-
getPreviewFeatures
public boolean getPreviewFeatures()
Returns true if preview features has been enabled.
-
execute
public void execute() throws org.apache.tools.ant.BuildException
Executes the task.- Overrides:
execute
in classorg.apache.tools.ant.Task
- Throws:
org.apache.tools.ant.BuildException
- if an error occurs
-
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 directorydestDir
- The destination directoryfiles
- 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
-
checkParameters
protected void checkParameters() throws org.apache.tools.ant.BuildException
- Throws:
org.apache.tools.ant.BuildException
-
compile
protected void compile()
-
makeCompileUnit
@Deprecated protected CompilationUnit makeCompileUnit()
Deprecated.This method is not in use anymore. UsemakeCompileUnit(GroovyClassLoader)
instead.
-
makeCompileUnit
protected CompilationUnit makeCompileUnit(GroovyClassLoader loader)
-
buildClassLoaderFor
protected GroovyClassLoader buildClassLoaderFor()
-
-