org.apache.tools.ant.taskdefs

## Class Tar

- java.lang.Object
- - org.apache.tools.ant.ProjectComponent
  - - org.apache.tools.ant.Task
    - - org.apache.tools.ant.taskdefs.MatchingTask
      - - org.apache.tools.ant.taskdefs.Tar

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

      public class Tar
      extends MatchingTask

  Creates a tar archive.
  Since:
    Ant 1.1

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `Tar.TarCompressionMethod` Valid Modes for Compression attribute to Tar Task
    `static class` | `Tar.TarFileSet` This is a FileSet with the option to specify permissions and other attributes.
    `static class` | `Tar.TarLongFileMode` Set of options for long file handling in the task.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `FAIL` Deprecated. since 1.5.x. Tar.FAIL is deprecated and is replaced with Tar.TarLongFileMode.FAIL
    `static java.lang.String` | `GNU` Deprecated. since 1.5.x. Tar.GNU is deprecated and is replaced with Tar.TarLongFileMode.GNU
    `static java.lang.String` | `OMIT` Deprecated. since 1.5.x. Tar.OMIT is deprecated and is replaced with Tar.TarLongFileMode.OMIT
    `static java.lang.String` | `TRUNCATE` Deprecated. since 1.5.x. Tar.TRUNCATE is deprecated and is replaced with Tar.TarLongFileMode.TRUNCATE
    `static java.lang.String` | `WARN` Deprecated. since 1.5.x. Tar.WARN is deprecated and is replaced with Tar.TarLongFileMode.WARN

    - ### Fields inherited from class org.apache.tools.ant.taskdefs.MatchingTask

      `fileset`

    - ### Fields inherited from class org.apache.tools.ant.Task

      `target, taskName, taskType, wrapper`

    - ### Fields inherited from class org.apache.tools.ant.ProjectComponent

      `description, location, project`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Tar()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(ResourceCollection res)` Add a collection of resources to archive.
    `protected boolean` | `archiveIsUpToDate(Resource r)` Is the archive up to date in relationship to a list of files.
    `protected boolean` | `archiveIsUpToDate(java.lang.String[] files)` Deprecated. since 1.5.x. use the two-arg version instead.
    `protected boolean` | `archiveIsUpToDate(java.lang.String[] files, java.io.File dir)` Is the archive up to date in relationship to a list of files.
    `protected Tar.TarFileSet` | `asTarFileSet(ArchiveFileSet archiveFileSet)` Copies fullpath, prefix and permission attributes from the ArchiveFileSet to a new TarFileSet (or returns it unchanged if it already is a TarFileSet).
    `protected boolean` | `check(java.io.File basedir, java.lang.String[] files)` Checks whether the archive is out-of-date with respect to the given files, ensures that the archive won't contain itself.
    `protected boolean` | `check(ResourceCollection rc)` Checks whether the archive is out-of-date with respect to the resources of the given collection.
    `Tar.TarFileSet` | `createTarFileSet()` Add a new fileset with the option to specify permissions
    `void` | `execute()` do the business
    `protected static java.lang.String[]` | `getFileNames(FileSet fs)` Grabs all included files and directors from the FileSet and returns them as an array of (relative) file names.
    `protected static boolean` | `isFileFileSet(ResourceCollection rc)` whether the given resource collection is a (subclass of) FileSet that only contains file system resources.
    `void` | `setBasedir(java.io.File baseDir)` This is the base directory to look in for things to tar.
    `void` | `setCompression(Tar.TarCompressionMethod mode)` Set compression method.
    `void` | `setDestFile(java.io.File destFile)` Set is the name/location of where to create the tar file.
    `void` | `setLongfile(java.lang.String mode)` Deprecated. since 1.5.x. setLongFile(String) is deprecated and is replaced with setLongFile(Tar.TarLongFileMode) to make Ant's Introspection mechanism do the work and also to encapsulate operations on the mode in its own class.
    `void` | `setLongfile(Tar.TarLongFileMode mode)` Set how to handle long files, those with a path>100 chars.
    `void` | `setTarfile(java.io.File tarFile)` Deprecated. since 1.5.x. For consistency with other tasks, please use setDestFile().
    `protected boolean` | `supportsNonFileResources()` Whether this task can deal with non-file resources.
    `protected void` | `tar(ResourceCollection rc, TarOutputStream tOut)` Adds the resources contained in this collection to the archive.
    `protected void` | `tarFile(java.io.File file, TarOutputStream tOut, java.lang.String vPath, Tar.TarFileSet tarFileSet)` tar a file
    `protected void` | `tarResource(Resource r, TarOutputStream tOut, java.lang.String vPath, Tar.TarFileSet tarFileSet)` tar a resource

    - ### 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`

    - ### Methods inherited from class org.apache.tools.ant.ProjectComponent

      `clone, getDescription, getLocation, getProject, setDescription, setLocation`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### WARN

          public static final java.lang.String WARN

      Deprecated. since 1.5.x. Tar.WARN is deprecated and is replaced with Tar.TarLongFileMode.WARN
      See Also:
        Constant Field Values

    - #### FAIL

          public static final java.lang.String FAIL

      Deprecated. since 1.5.x. Tar.FAIL is deprecated and is replaced with Tar.TarLongFileMode.FAIL
      See Also:
        Constant Field Values

    - #### TRUNCATE

          public static final java.lang.String TRUNCATE

      Deprecated. since 1.5.x. Tar.TRUNCATE is deprecated and is replaced with Tar.TarLongFileMode.TRUNCATE
      See Also:
        Constant Field Values

    - #### GNU

          public static final java.lang.String GNU

      Deprecated. since 1.5.x. Tar.GNU is deprecated and is replaced with Tar.TarLongFileMode.GNU
      See Also:
        Constant Field Values

    - #### OMIT

          public static final java.lang.String OMIT

      Deprecated. since 1.5.x. Tar.OMIT is deprecated and is replaced with Tar.TarLongFileMode.OMIT
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Tar

          public Tar()

  - ### Method Detail

    - #### createTarFileSet

          public Tar.TarFileSet createTarFileSet()

      Add a new fileset with the option to specify permissions
      Returns:
        the tar fileset to be used as the nested element.

    - #### add

          public void add(ResourceCollection res)

      Add a collection of resources to archive.
      Parameters:
        `res` - a resource collection to archive.
      Since:
        Ant 1.7

    - #### setTarfile

          public void setTarfile(java.io.File tarFile)

      Deprecated. since 1.5.x. For consistency with other tasks, please use setDestFile().
      Set is the name/location of where to create the tar file.
      Parameters:
        `tarFile` - the location of the tar file.

    - #### setDestFile

          public void setDestFile(java.io.File destFile)

      Set is the name/location of where to create the tar file.
      Parameters:
        `destFile` - The output of the tar
      Since:
        Ant 1.5

    - #### setBasedir

          public void setBasedir(java.io.File baseDir)

      This is the base directory to look in for things to tar.
      Parameters:
        `baseDir` - the base directory.

    - #### setLongfile

          public void setLongfile(java.lang.String mode)

      Deprecated. since 1.5.x. setLongFile(String) is deprecated and is replaced with setLongFile(Tar.TarLongFileMode) to make Ant's Introspection mechanism do the work and also to encapsulate operations on the mode in its own class.
      Set how to handle long files, those with a path>100 chars. Optional, default=warn.

      Allowable values are

      - truncate - paths are truncated to the maximum length
      - fail - paths greater than the maximum cause a build exception
      - warn - paths greater than the maximum cause a warning and GNU is used
      - gnu - GNU extensions are used for any paths greater than the maximum.
      - omit - paths greater than the maximum are omitted from the archive
      Parameters:
        `mode` - the mode string to handle long files.

    - #### setLongfile

          public void setLongfile(Tar.TarLongFileMode mode)

      Set how to handle long files, those with a path>100 chars. Optional, default=warn.

      Allowable values are

      - truncate - paths are truncated to the maximum length
      - fail - paths greater than the maximum cause a build exception
      - warn - paths greater than the maximum cause a warning and GNU is used
      - gnu - GNU extensions are used for any paths greater than the maximum.
      - omit - paths greater than the maximum are omitted from the archive
      Parameters:
        `mode` - the mode to handle long file names.

    - #### setCompression

          public void setCompression(Tar.TarCompressionMethod mode)

      Set compression method. Allowable values are
      - none - no compression
      - gzip - Gzip compression
      - bzip2 - Bzip2 compression
      Parameters:
        `mode` - the compression method.

    - #### execute

          public void execute()
                       throws BuildException

      do the business
      Overrides:
        `execute` in class `Task`
      Throws:
        `BuildException` - on error

    - #### tarFile

          protected void tarFile(java.io.File file,
                     TarOutputStream tOut,
                     java.lang.String vPath,
                     Tar.TarFileSet tarFileSet)
                          throws java.io.IOException

      tar a file
      Parameters:
        `file` - the file to tar
        `tOut` - the output stream
        `vPath` - the path name of the file to tar
        `tarFileSet` - the fileset that the file came from.
      Throws:
        `java.io.IOException` - on error

    - #### tarResource

          protected void tarResource(Resource r,
                         TarOutputStream tOut,
                         java.lang.String vPath,
                         Tar.TarFileSet tarFileSet)
                              throws java.io.IOException

      tar a resource
      Parameters:
        `r` - the resource to tar
        `tOut` - the output stream
        `vPath` - the path name of the file to tar
        `tarFileSet` - the fileset that the file came from, may be null.
      Throws:
        `java.io.IOException` - on error
      Since:
        Ant 1.7

    - #### archiveIsUpToDate

          protected boolean archiveIsUpToDate(java.lang.String[] files)

      Deprecated. since 1.5.x. use the two-arg version instead.
      Is the archive up to date in relationship to a list of files.
      Parameters:
        `files` - the files to check
      Returns:
        true if the archive is up to date.

    - #### archiveIsUpToDate

          protected boolean archiveIsUpToDate(java.lang.String[] files,
                                  java.io.File dir)

      Is the archive up to date in relationship to a list of files.
      Parameters:
        `files` - the files to check
        `dir` - the base directory for the files.
      Returns:
        true if the archive is up to date.
      Since:
        Ant 1.5.2

    - #### archiveIsUpToDate

          protected boolean archiveIsUpToDate(Resource r)

      Is the archive up to date in relationship to a list of files.
      Parameters:
        `r` - the files to check
      Returns:
        true if the archive is up to date.
      Since:
        Ant 1.7

    - #### supportsNonFileResources

          protected boolean supportsNonFileResources()

      Whether this task can deal with non-file resources.

      This implementation returns true only if this task is <tar>. Any subclass of this class that also wants to support non-file resources needs to override this method. We need to do so for backwards compatibility reasons since we can't expect subclasses to support resources.

      Returns:
        true for this task.
      Since:
        Ant 1.7

    - #### check

          protected boolean check(ResourceCollection rc)

      Checks whether the archive is out-of-date with respect to the resources of the given collection.

      Also checks that either all collections only contain file resources or this class supports non-file collections.

      And - in case of file-collections - ensures that the archive won't contain itself.

      Parameters:
        `rc` - the resource collection to check
      Returns:
        whether the archive is up-to-date
      Since:
        Ant 1.7

    - #### check

          protected boolean check(java.io.File basedir,
                      java.lang.String[] files)

      Checks whether the archive is out-of-date with respect to the given files, ensures that the archive won't contain itself.
      Parameters:
        `basedir` - base directory for file names
        `files` - array of relative file names
      Returns:
        whether the archive is up-to-date
      Since:
        Ant 1.7

    - #### tar

          protected void tar(ResourceCollection rc,
                 TarOutputStream tOut)
                      throws java.io.IOException

      Adds the resources contained in this collection to the archive.

      Uses the file based methods for file resources for backwards compatibility.

      Parameters:
        `rc` - the collection containing resources to add
        `tOut` - stream writing to the archive.
      Throws:
        `java.io.IOException` - on error.
      Since:
        Ant 1.7

    - #### isFileFileSet

          protected static boolean isFileFileSet(ResourceCollection rc)

      whether the given resource collection is a (subclass of) FileSet that only contains file system resources.
      Parameters:
        `rc` - the resource collection to check.
      Returns:
        true if the collection is a fileset.
      Since:
        Ant 1.7

    - #### getFileNames

          protected static java.lang.String[] getFileNames(FileSet fs)

      Grabs all included files and directors from the FileSet and returns them as an array of (relative) file names.
      Parameters:
        `fs` - the fileset to operate on.
      Returns:
        a list of the filenames.
      Since:
        Ant 1.7

    - #### asTarFileSet

          protected Tar.TarFileSet asTarFileSet(ArchiveFileSet archiveFileSet)

      Copies fullpath, prefix and permission attributes from the ArchiveFileSet to a new TarFileSet (or returns it unchanged if it already is a TarFileSet).
      Parameters:
        `archiveFileSet` - fileset to copy attributes from, may be null
      Returns:
        a new TarFileSet.
      Since:
        Ant 1.7