# Class Jar

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
org.gradle.api.internal.ConventionTask
org.gradle.api.tasks.AbstractCopyTask
org.gradle.api.tasks.bundling.AbstractArchiveTask
org.gradle.api.tasks.bundling.Zip
org.gradle.jvm.tasks.Jar

All Implemented Interfaces:
  `Comparable<Task>, ContentFilterable, CopyProcessingSpec, CopySourceSpec, CopySpec, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.file.copy.CopySpecSource, org.gradle.api.internal.IConventionAware, org.gradle.api.internal.TaskInternal, Named, ExtensionAware, Task, PatternFilterable, Configurable<Task>`

Direct Known Subclasses:
  `Jar`

@DisableCachingByDefault(because="Not worth caching") public abstract class Jar extends Zip
Assembles a JAR archive.

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Named

  `Named.Namer`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `DEFAULT_EXTENSION`

  ### Fields inherited from class Zip

  `ZIP_EXTENSION`

  ### Fields inherited from interface Task

  `TASK_ACTION, TASK_CONSTRUCTOR_ARGS, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Jar()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Manifest`
  `getManifest()`
  Returns the manifest for this JAR archive.
  `String`
  `getManifestContentCharset()`
  The character set used to encode the manifest content.
  `String`
  `getMetadataCharset()`
  The character set used to encode JAR metadata like file names.
  `CopySpec`
  `getMetaInf()`
  `Jar`
  `manifest(Closure<?> configureClosure)`
  Configures the manifest for this JAR archive.
  `Jar`
  `manifest(Action<? super Manifest> configureAction)`
  Configures the manifest for this JAR archive.
  `CopySpec`
  `metaInf(Closure<?> configureClosure)`
  Adds content to this JAR archive's META-INF directory.
  `CopySpec`
  `metaInf(Action<? super CopySpec> configureAction)`
  Adds content to this JAR archive's META-INF directory.
  `void`
  `setManifest(Manifest manifest)`
  Sets the manifest for this JAR archive.
  `void`
  `setManifestContentCharset(String manifestContentCharset)`
  The character set used to encode the manifest content.
  `void`
  `setMetadataCharset(String metadataCharset)`
  The character set used to encode JAR metadata like file names.

  ### Methods inherited from class Zip

  `createCopyAction, getCompressor, getEntryCompression, isZip64, setEntryCompression, setZip64`

  ### Methods inherited from class AbstractArchiveTask

  `createCopyActionExecuter, getArchiveAppendix, getArchiveBaseName, getArchiveClassifier, getArchiveExtension, getArchiveFile, getArchiveFileName, getArchiveVersion, getDestinationDirectory, getFileSystemOperations, getReproducibleFileTimestamp, into, into, into, isPreserveFileTimestamps, isReproducibleFileOrder, setPreserveFileTimestamps, setReproducibleFileOrder, useFileSystemPermissions`

  ### Methods inherited from class AbstractCopyTask

  `copy, createRootSpec, dirPermissions, eachFile, eachFile, exclude, exclude, exclude, exclude, expand, expand, filePermissions, filesMatching, filesMatching, filesNotMatching, filesNotMatching, filter, filter, filter, filter, from, from, from, getDirectoryFileTreeFactory, getDirPermissions, getDocumentationRegistry, getDuplicatesStrategy, getExcludes, getFileLookup, getFilePermissions, getFileResolver, getFileSystem, getFilteringCharset, getIncludeEmptyDirs, getIncludes, getInstantiator, getMainSpec, getObjectFactory, getPropertyFactory, getRootSpec, getSource, include, include, include, include, isCaseSensitive, rename, rename, rename, rename, setCaseSensitive, setDuplicatesStrategy, setExcludes, setFilteringCharset, setIncludeEmptyDirs, setIncludes, with`

  ### Methods inherited from class org.gradle.api.internal.ConventionTask

  `conventionMapping, conventionMapping, getConventionMapping`

  ### Methods inherited from class DefaultTask

  `compareTo, configure, dependsOn, doFirst, doFirst, doFirst, doLast, doLast, doLast, finalizedBy, getActions, getAnt, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExtensions, getFinalizedBy, getGroup, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOutputs, getPath, getProject, getShouldRunAfter, getState, getTaskDependencies, getTemporaryDir, getTimeout, hasProperty, mustRunAfter, onlyIf, onlyIf, onlyIf, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setFinalizedBy, setGroup, setMustRunAfter, setOnlyIf, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, usesService`

  ### Methods inherited from class org.gradle.api.internal.AbstractTask

  `acceptServiceReferences, appendParallelSafeAction, doNotTrackState, doNotTrackStateIf, getAsDynamicObject, getIdentityPath, getImpliesSubProjects, getLifecycleDependencies, getLoggingManager, getOnlyIf, getReasonNotToTrackState, getReasonsNotToTrackState, getReasonTaskIsIncompatibleWithConfigurationCache, getRequiredServices, getServices, getSharedResources, getStandardOutputCapture, getTaskActions, getTaskIdentity, getTemporaryDirFactory, hasTaskActions, injectIntoNewInstance, isCompatibleWithConfigurationCache, isEnabled, isHasCustomActions, notCompatibleWithConfigurationCache, prependParallelSafeAction, restoreOnlyIf, restoreTaskActions, setImpliesSubProjects`

  ### Methods inherited from class Object

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

  ### Methods inherited from interface Task

  `doNotTrackState, notCompatibleWithConfigurationCache`

- ## Field Details

  - ### DEFAULT_EXTENSION

    public static final String DEFAULT_EXTENSION
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### Jar

    @Inject public Jar()

- ## Method Details

  - ### getMetadataCharset

    public String getMetadataCharset()
    The character set used to encode JAR metadata like file names. Defaults to UTF-8. You can change this property but it is not recommended as JVMs expect JAR metadata to be encoded using UTF-8
    Overrides:
      `getMetadataCharset` in class `Zip`
    Returns:
      the character set used to encode JAR metadata like file names
    Since:
      2.14

  - ### setMetadataCharset

    public void setMetadataCharset(String metadataCharset)
    The character set used to encode JAR metadata like file names. Defaults to UTF-8. You can change this property but it is not recommended as JVMs expect JAR metadata to be encoded using UTF-8
    Overrides:
      `setMetadataCharset` in class `Zip`
    Parameters:
      `metadataCharset` - the character set used to encode JAR metadata like file names
    Since:
      2.14

  - ### getManifestContentCharset

    @Input public String getManifestContentCharset()
    The character set used to encode the manifest content. Defaults to UTF-8. You can change this property but it is not recommended as JVMs expect manifests content to be encoded using UTF-8.
    Returns:
      the character set used to encode the manifest content
    Since:
      2.14

  - ### setManifestContentCharset

    public void setManifestContentCharset(String manifestContentCharset)
    The character set used to encode the manifest content.
    Parameters:
      `manifestContentCharset` - the character set used to encode the manifest content
    Since:
      2.14
    See Also:
      - `getManifestContentCharset()`

  - ### getManifest

    @Internal public Manifest getManifest()
    Returns the manifest for this JAR archive.
    Returns:
      The manifest

  - ### setManifest

    public void setManifest(Manifest manifest)
    Sets the manifest for this JAR archive.
    Parameters:
      `manifest` - The manifest. May be null.

  - ### manifest

    public Jar manifest(@DelegatesTo(Manifest.class) Closure<?> configureClosure)
    Configures the manifest for this JAR archive.

    The given closure is executed to configure the manifest. The `Manifest` is passed to the closure as its delegate.

    Parameters:
      `configureClosure` - The closure.
    Returns:
      This.

  - ### manifest

    public Jar manifest(Action<? super Manifest> configureAction)
    Configures the manifest for this JAR archive.

    The given action is executed to configure the manifest.

        plugins {
            id 'java'
        }

        def buildNumber = providers.gradleProperty('buildNumber').orElse('0')

        tasks.named('jar', Jar) {
            manifest {
                attributes('Build-Number': buildNumber)
            }
        }

    Parameters:
      `configureAction` - The action.
    Returns:
      This.
    Since:
      3.5
    See Also:
      - `Manifest.attributes(java.util.Map)`

  - ### getMetaInf

    @Internal public CopySpec getMetaInf()

  - ### metaInf

    public CopySpec metaInf(@DelegatesTo(CopySpec.class) Closure<?> configureClosure)
    Adds content to this JAR archive's META-INF directory.

    The given closure is executed to configure a `CopySpec`. The `CopySpec` is passed to the closure as its delegate.

    Parameters:
      `configureClosure` - The closure.
    Returns:
      The created `CopySpec`

  - ### metaInf

    public CopySpec metaInf(Action<? super CopySpec> configureAction)
    Adds content to this JAR archive's META-INF directory.

    The given action is executed to configure a `CopySpec`.

    Parameters:
      `configureAction` - The action.
    Returns:
      The created `CopySpec`
    Since:
      3.5