Class Javac

All Implemented Interfaces:
java.lang.Cloneable, SelectorContainer

public class Javac
extends MatchingTask
Compiles Java source files. This task can take the following arguments:
  • sourcedir
  • destdir
  • deprecation
  • classpath
  • bootclasspath
  • extdirs
  • optimize
  • debug
  • encoding
  • target
  • depend
  • verbose
  • failonerror
  • includeantruntime
  • includejavaruntime
  • source
  • compiler
  • release
Of these arguments, the sourcedir and destdir are required.

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

Since:
Ant 1.1
  • Field Details

  • Constructor Details

    • Javac

      public Javac()
      Javac task for compilation of Java files.
  • Method Details

    • getDebugLevel

      public java.lang.String getDebugLevel()
      Get the value of debugLevel.
      Returns:
      value of debugLevel.
    • setDebugLevel

      public void setDebugLevel​(java.lang.String v)
      Keyword list to be appended to the -g command-line switch. This will be ignored by all implementations except modern and classic(ver >= 1.2). Legal values are none or a comma-separated list of the following keywords: lines, vars, and source. If debuglevel is not specified, by default, :none will be appended to -g. If debug is not turned on, this attribute will be ignored.
      Parameters:
      v - Value to assign to debugLevel.
    • getSource

      public java.lang.String getSource()
      Get the value of source.
      Returns:
      value of source.
    • setSource

      public void setSource​(java.lang.String v)
      Value of the -source command-line switch; will be ignored by all implementations except modern, jikes and gcj (gcj uses -fsource).

      If you use this attribute together with jikes or gcj, you must make sure that your version of jikes supports the -source switch.

      Legal values are 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, and any integral number bigger than 4 - by default, no -source argument will be used at all.

      Parameters:
      v - Value to assign to source.
    • 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
    • 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
    • setNativeHeaderDir

      public void setNativeHeaderDir​(java.io.File nhDir)
      Set the destination directory into which the generated native header files should be placed.
      Parameters:
      nhDir - where to place generated native header files
      Since:
      Ant 1.9.8
    • getNativeHeaderDir

      public java.io.File getNativeHeaderDir()
      Gets the destination directory into which the generated native header files should be placed.
      Returns:
      where to place generated native header files
      Since:
      Ant 1.9.8
    • 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
    • setModulesourcepath

      public void setModulesourcepath​(Path msp)
      Set the modulesourcepath to be used for this compilation.
      Parameters:
      msp - the modulesourcepath
      Since:
      1.9.7
    • getModulesourcepath

      public Path getModulesourcepath()
      Gets the modulesourcepath to be used for this compilation.
      Returns:
      the modulesourcepath
      Since:
      1.9.7
    • createModulesourcepath

      public Path createModulesourcepath()
      Adds a path to modulesourcepath.
      Returns:
      a modulesourcepath to be configured
      Since:
      1.9.7
    • setModulesourcepathRef

      public void setModulesourcepathRef​(Reference r)
      Adds a reference to a modulesourcepath defined elsewhere.
      Parameters:
      r - a reference to a modulesourcepath
      Since:
      1.9.7
    • 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
    • setModulepath

      public void setModulepath​(Path mp)
      Set the modulepath to be used for this compilation.
      Parameters:
      mp - an Ant Path object containing the modulepath.
      Since:
      1.9.7
    • getModulepath

      public Path getModulepath()
      Gets the modulepath to be used for this compilation.
      Returns:
      the modulepath
      Since:
      1.9.7
    • createModulepath

      public Path createModulepath()
      Adds a path to the modulepath.
      Returns:
      a modulepath to be configured
      Since:
      1.9.7
    • setModulepathRef

      public void setModulepathRef​(Reference r)
      Adds a reference to a modulepath defined elsewhere.
      Parameters:
      r - a reference to a modulepath
      Since:
      1.9.7
    • setUpgrademodulepath

      public void setUpgrademodulepath​(Path ump)
      Set the upgrademodulepath to be used for this compilation.
      Parameters:
      ump - an Ant Path object containing the upgrademodulepath.
      Since:
      1.9.7
    • getUpgrademodulepath

      public Path getUpgrademodulepath()
      Gets the upgrademodulepath to be used for this compilation.
      Returns:
      the upgrademodulepath
      Since:
      1.9.7
    • createUpgrademodulepath

      public Path createUpgrademodulepath()
      Adds a path to the upgrademodulepath.
      Returns:
      an upgrademodulepath to be configured
      Since:
      1.9.7
    • setUpgrademodulepathRef

      public void setUpgrademodulepathRef​(Reference r)
      Adds a reference to the upgrademodulepath defined elsewhere.
      Parameters:
      r - a reference to an upgrademodulepath
      Since:
      1.9.7
    • setBootclasspath

      public void setBootclasspath​(Path bootclasspath)
      Sets the bootclasspath that will be used to compile the classes against.
      Parameters:
      bootclasspath - a path to use as a boot class path (may be more than one)
    • getBootclasspath

      public Path getBootclasspath()
      Gets the bootclasspath that will be used to compile the classes against.
      Returns:
      the boot path
    • createBootclasspath

      public Path createBootclasspath()
      Adds a path to the bootclasspath.
      Returns:
      a path to be configured
    • setBootClasspathRef

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

      public void setExtdirs​(Path extdirs)
      Sets the extension directories that will be used during the compilation.
      Parameters:
      extdirs - a path
    • getExtdirs

      public Path getExtdirs()
      Gets the extension directories that will be used during the compilation.
      Returns:
      the extension directories as a path
    • createExtdirs

      public Path createExtdirs()
      Adds a path to extdirs.
      Returns:
      a path to be configured
    • setListfiles

      public void setListfiles​(boolean list)
      If true, list the source files being handed off to the compiler.
      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 failoferror
    • getFailonerror

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

      public void setDeprecation​(boolean deprecation)
      Indicates whether source should be compiled with deprecation information; defaults to off.
      Parameters:
      deprecation - if true turn on deprecation information
    • getDeprecation

      public boolean getDeprecation()
      Gets the deprecation flag.
      Returns:
      the deprecation 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)
      Set the Java source file encoding name.
      Parameters:
      encoding - the source file encoding
    • getEncoding

      public java.lang.String getEncoding()
      Gets the java source file encoding name.
      Returns:
      the source file encoding name
    • setDebug

      public void setDebug​(boolean debug)
      Indicates whether source should be compiled with debug information; defaults to off.
      Parameters:
      debug - if true compile with debug information
    • getDebug

      public boolean getDebug()
      Gets the debug flag.
      Returns:
      the debug flag
    • setOptimize

      public void setOptimize​(boolean optimize)
      If true, compiles with optimization enabled.
      Parameters:
      optimize - if true compile with optimization enabled
    • getOptimize

      public boolean getOptimize()
      Gets the optimize flag.
      Returns:
      the optimize flag
    • setDepend

      public void setDepend​(boolean depend)
      Enables dependency-tracking for compilers that support this (jikes and classic).
      Parameters:
      depend - if true enable dependency-tracking
    • getDepend

      public boolean getDepend()
      Gets the depend flag.
      Returns:
      the depend flag
    • setVerbose

      public void setVerbose​(boolean verbose)
      If true, asks the compiler for verbose output.
      Parameters:
      verbose - if true, asks the compiler for verbose output
    • getVerbose

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

      public void setTarget​(java.lang.String target)
      Sets the target VM that the classes will be compiled for. Valid values depend on the compiler, for jdk 1.4 the valid values are "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9" and any integral number bigger than 4
      Parameters:
      target - the target VM
    • getTarget

      public java.lang.String getTarget()
      Gets the target VM that the classes will be compiled for.
      Returns:
      the target VM
    • setRelease

      public void setRelease​(java.lang.String release)
      Sets the version to use for the --release switch that combines source, target and setting the bootclasspath. Values depend on the compiler, for jdk 9 the valid values are "6", "7", "8", "9".
      Parameters:
      release - the value of the release attribute
      Since:
      Ant 1.9.8
    • getRelease

      public java.lang.String getRelease()
      Gets the version to use for the --release switch that combines source, target and setting the bootclasspath.
      Returns:
      the value of the release attribute
      Since:
      Ant 1.9.8
    • setIncludeantruntime

      public void setIncludeantruntime​(boolean include)
      If true, includes Ant's own classpath in the classpath.
      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.
      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 javac compiler.
      Parameters:
      f - "true|false|on|off|yes|no"
    • setExecutable

      public void setExecutable​(java.lang.String forkExec)
      Sets the name of the javac executable.

      Ignored unless fork is true or extJavac has been specified as the compiler.

      Parameters:
      forkExec - the name of the executable
    • getExecutable

      public java.lang.String getExecutable()
      The value of the executable attribute, if any.
      Returns:
      the name of the java executable
      Since:
      Ant 1.6
    • isForkedJavac

      public boolean isForkedJavac()
      Is this a forked invocation of JDK's javac?
      Returns:
      true if this is a forked invocation
    • getJavacExecutable

      public java.lang.String getJavacExecutable()
      The name of the javac executable to use in fork-mode.

      This is either the name specified with the executable attribute or the full path of the javac compiler of the VM Ant is currently running in - guessed by Ant.

      You should not invoke this method if you want to get the value of the executable command - use getExecutable for this.

      Returns:
      the name of the javac executable
    • setNowarn

      public void setNowarn​(boolean flag)
      If true, enables the -nowarn option.
      Parameters:
      flag - if true, enable the -nowarn option
    • getNowarn

      public boolean getNowarn()
      Should the -nowarn option be used.
      Returns:
      true if the -nowarn option should be used
    • createCompilerArg

      public Javac.ImplementationSpecificArgument createCompilerArg()
      Adds an implementation specific command-line argument.
      Returns:
      a ImplementationSpecificArgument to be configured
    • getCurrentCompilerArgs

      public java.lang.String[] getCurrentCompilerArgs()
      Get the additional implementation specific command line arguments.
      Returns:
      array of command line arguments, guaranteed to be non-null.
    • setTempdir

      public void setTempdir​(java.io.File tmpDir)
      Where Ant should place temporary files.
      Parameters:
      tmpDir - the temporary directory
      Since:
      Ant 1.6
    • getTempdir

      public java.io.File getTempdir()
      Where Ant should place temporary files.
      Returns:
      the temporary directory
      Since:
      Ant 1.6
    • 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.
      Since:
      Ant 1.7.1.
    • 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.
      Since:
      Ant 1.7.1.
    • 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 javac task (success or failure).
      Returns:
      true if compilation succeeded, or was not necessary, false if the compilation failed.
    • createCompilerClasspath

      public Path createCompilerClasspath()
      The classpath to use when loading the compiler implementation if it is not a built-in one.
      Returns:
      Path
      Since:
      Ant 1.8.0
    • add

      public void add​(CompilerAdapter adapter)
      Set the compiler adapter explicitly.
      Parameters:
      adapter - CompilerAdapter
      Since:
      Ant 1.8.0
    • setCreateMissingPackageInfoClass

      public void setCreateMissingPackageInfoClass​(boolean b)
      Whether package-info.class files will be created by Ant matching package-info.java files that have been compiled but didn't create class files themselves.
      Parameters:
      b - boolean
      Since:
      Ant 1.8.3
    • execute

      public void execute() throws BuildException
      Executes the task.
      Overrides:
      execute in class Task
      Throws:
      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 directory
      destDir - The destination directory
      files - An array of filenames
    • getFileList

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

      protected boolean isJdkCompiler​(java.lang.String compilerImpl)
      Is the compiler implementation a jdk compiler
      Parameters:
      compilerImpl - the name of the compiler implementation
      Returns:
      true if compilerImpl is "modern", "classic", "javac1.1", "javac1.2", "javac1.3", "javac1.4", "javac1.5", "javac1.6", "javac1.7", "javac1.8", "javac1.9", "javac9" or "javac10+".
    • getSystemJavac

      protected java.lang.String getSystemJavac()
      Returns:
      the executable name of the java compiler
    • setCompiler

      public void setCompiler​(java.lang.String compiler)
      Choose the implementation for this particular task.
      Parameters:
      compiler - the name of the compiler
      Since:
      Ant 1.5
    • getCompiler

      public java.lang.String getCompiler()
      The implementation for this particular task.

      Defaults to the build.compiler property but can be overridden via the compiler and fork attributes.

      If fork has been set to true, the result will be extJavac and not classic or java1.2 - no matter what the compiler attribute looks like.

      Returns:
      the compiler.
      Since:
      Ant 1.5
      See Also:
      getCompilerVersion()
    • getCompilerVersion

      public java.lang.String getCompilerVersion()
      The implementation for this particular task.

      Defaults to the build.compiler property but can be overridden via the compiler attribute.

      This method does not take the fork attribute into account.

      Returns:
      the compiler.
      Since:
      Ant 1.5
      See Also:
      getCompiler()
    • checkParameters

      protected void checkParameters() throws BuildException
      Check that all required attributes have been set and nothing silly has been entered.
      Throws:
      BuildException - if an error occurs
      Since:
      Ant 1.5
    • compile

      protected void compile()
      Perform the compilation.
      Since:
      Ant 1.5