Task for building animalsniffer signature. Compiled classes, jars and other signatures may be used as source.
Task may be used directly or through registered `animalsnifferSignature' configuration closure.
AnimalsnifferClasspath will be set from 'animalsniffer' configuration. By default, output file
is `build/animalsniffer/${task.name}/${task.name}.sig`. In some cases multiple signatures could be produces,
so use task.outputFiles method to get correct task output.
Properties may be used for configuration directly, but it will be more convenient to use provided helper methods instead.
Animalsniffer ant task does not allow empty files, but, in some cases, it could happen. For example, when two or more signatures must be merged. In this case plugin will specify fake file together with it's exclusion from resulted signature to overcome ant task limitation.
| Modifiers | Name | Description |
|---|---|---|
static java.lang.String |
SIGNATURE_DELIMITER |
Symbol used when mergeSignatures disabled and so multiple signatures produced (according to input signatures count). |
| Fields inherited from class | Fields |
|---|---|
class org.gradle.api.internal.ConventionTask |
TASK_NAME, TASK_DESCRIPTION, TASK_GROUP, TASK_TYPE, TASK_DEPENDS_ON, TASK_OVERWRITE, TASK_ACTION, TASK_CONSTRUCTOR_ARGS |
| Type | Name and description |
|---|---|
boolean |
allowEmptyFilesAnimalsniffer ant task does not allow empty files, but, in some cases, it could happen. |
org.gradle.api.file.FileCollection |
animalsnifferClasspathThe class path containing the Animal Sniffer library to be used. |
boolean |
debugConfiguration debug output |
java.util.Set<java.lang.String> |
excludeExclude packages ('com.sun.*') |
org.gradle.api.file.FileCollection |
filesCompiled classes and jars. |
java.util.Set<java.lang.String> |
includeInclude only packages ('com.java.*') |
boolean |
mergeSignaturesWhen multiple signatures provided they will be merged. |
java.io.File |
outputDirectoryOutput signatures directory. |
java.lang.String |
outputNameOutput signature name. |
org.gradle.api.file.FileCollection |
signaturesSignature files to extend. |
| Constructor and description |
|---|
BuildSignatureTask
() |
| Type Params | Return Type | Name and description |
|---|---|---|
|
void |
exclude(java.lang.String... path)Use to exclude classes in resulted signature. |
|
void |
files(java.lang.Object input)Files to use for signature generation. |
|
org.gradle.api.internal.project.IsolatedAntBuilder |
getAntBuilder() |
|
org.gradle.api.file.FileCollection |
getOutputFiles()It is intentional that property is not annotated with @OutputFiles! |
|
void |
include(java.lang.String... path)Use to include only defined classes in resulted signature. |
|
void |
run() |
|
void |
signatures(java.lang.Object signature)Signatures to extend from (use all definitions from signature). |
| Methods inherited from class | Name |
|---|---|
class org.gradle.api.internal.ConventionTask |
org.gradle.api.internal.ConventionTask#getConventionMapping(), org.gradle.api.internal.ConventionTask#conventionMapping(java.lang.String, java.util.concurrent.Callable), org.gradle.api.internal.ConventionTask#conventionMapping(java.lang.String, groovy.lang.Closure), org.gradle.api.internal.ConventionTask#compareTo(org.gradle.api.Task), org.gradle.api.internal.ConventionTask#compareTo(java.lang.Object), org.gradle.api.internal.ConventionTask#getName(), org.gradle.api.internal.ConventionTask#setProperty(java.lang.String, java.lang.Object), org.gradle.api.internal.ConventionTask#getLogger(), org.gradle.api.internal.ConventionTask#getActions(), org.gradle.api.internal.ConventionTask#getState(), org.gradle.api.internal.ConventionTask#getState(), org.gradle.api.internal.ConventionTask#getPath(), org.gradle.api.internal.ConventionTask#getExtensions(), org.gradle.api.internal.ConventionTask#getDescription(), org.gradle.api.internal.ConventionTask#hasProperty(java.lang.String), org.gradle.api.internal.ConventionTask#configure(groovy.lang.Closure), org.gradle.api.internal.ConventionTask#configure(groovy.lang.Closure), org.gradle.api.internal.ConventionTask#setEnabled(boolean), org.gradle.api.internal.ConventionTask#property(java.lang.String), org.gradle.api.internal.ConventionTask#getGroup(), org.gradle.api.internal.ConventionTask#getInputs(), org.gradle.api.internal.ConventionTask#getInputs(), org.gradle.api.internal.ConventionTask#usesService(org.gradle.api.provider.Provider), org.gradle.api.internal.ConventionTask#getAnt(), org.gradle.api.internal.ConventionTask#getLogging(), org.gradle.api.internal.ConventionTask#getLogging(), org.gradle.api.internal.ConventionTask#setGroup(java.lang.String), org.gradle.api.internal.ConventionTask#getDidWork(), org.gradle.api.internal.ConventionTask#getTimeout(), org.gradle.api.internal.ConventionTask#getEnabled(), org.gradle.api.internal.ConventionTask#getOutputs(), org.gradle.api.internal.ConventionTask#getOutputs(), org.gradle.api.internal.ConventionTask#getDestroyables(), org.gradle.api.internal.ConventionTask#getLocalState(), org.gradle.api.internal.ConventionTask#getTemporaryDir(), org.gradle.api.internal.ConventionTask#setMustRunAfter(java.lang.Iterable), org.gradle.api.internal.ConventionTask#setFinalizedBy(java.lang.Iterable), org.gradle.api.internal.ConventionTask#setShouldRunAfter(java.lang.Iterable), org.gradle.api.internal.ConventionTask#onlyIf(org.gradle.api.specs.Spec), org.gradle.api.internal.ConventionTask#onlyIf(groovy.lang.Closure), org.gradle.api.internal.ConventionTask#dependsOn([Ljava.lang.Object;), org.gradle.api.internal.ConventionTask#getDependsOn(), org.gradle.api.internal.ConventionTask#setDidWork(boolean), org.gradle.api.internal.ConventionTask#setOnlyIf(groovy.lang.Closure), org.gradle.api.internal.ConventionTask#setOnlyIf(org.gradle.api.specs.Spec), org.gradle.api.internal.ConventionTask#doFirst(java.lang.String, org.gradle.api.Action), org.gradle.api.internal.ConventionTask#doFirst(org.gradle.api.Action), org.gradle.api.internal.ConventionTask#doFirst(groovy.lang.Closure), org.gradle.api.internal.ConventionTask#doLast(groovy.lang.Closure), org.gradle.api.internal.ConventionTask#doLast(java.lang.String, org.gradle.api.Action), org.gradle.api.internal.ConventionTask#doLast(org.gradle.api.Action), org.gradle.api.internal.ConventionTask#setActions(java.util.List), org.gradle.api.internal.ConventionTask#setDependsOn(java.lang.Iterable), org.gradle.api.internal.ConventionTask#getFinalizedBy(), org.gradle.api.internal.ConventionTask#getShouldRunAfter(), org.gradle.api.internal.ConventionTask#getMustRunAfter(), org.gradle.api.internal.ConventionTask#finalizedBy([Ljava.lang.Object;), org.gradle.api.internal.ConventionTask#mustRunAfter([Ljava.lang.Object;), org.gradle.api.internal.ConventionTask#shouldRunAfter([Ljava.lang.Object;), org.gradle.api.internal.ConventionTask#getProject(), org.gradle.api.internal.ConventionTask#setDescription(java.lang.String), org.gradle.api.internal.ConventionTask#getTaskDependencies(), org.gradle.api.internal.ConventionTask#getTaskDependencies(), org.gradle.api.internal.ConventionTask#setImpliesSubProjects(boolean), org.gradle.api.internal.ConventionTask#injectIntoNewInstance(org.gradle.api.internal.project.ProjectInternal, org.gradle.api.internal.project.taskfactory.TaskIdentity, java.util.concurrent.Callable), org.gradle.api.internal.ConventionTask#appendParallelSafeAction(org.gradle.api.Action), org.gradle.api.internal.ConventionTask#getRequiredServices(), org.gradle.api.internal.ConventionTask#setLoggerMessageRewriter(org.gradle.internal.logging.slf4j.ContextAwareTaskLogger$MessageRewriter), org.gradle.api.internal.ConventionTask#getImpliesSubProjects(), org.gradle.api.internal.ConventionTask#getTemporaryDirFactory(), org.gradle.api.internal.ConventionTask#prependParallelSafeAction(org.gradle.api.Action), org.gradle.api.internal.ConventionTask#isEnabled(), org.gradle.api.internal.ConventionTask#hasTaskActions(), org.gradle.api.internal.ConventionTask#getTaskActions(), org.gradle.api.internal.ConventionTask#getOnlyIf(), org.gradle.api.internal.ConventionTask#isHasCustomActions(), org.gradle.api.internal.ConventionTask#getStandardOutputCapture(), org.gradle.api.internal.ConventionTask#getAsDynamicObject(), org.gradle.api.internal.ConventionTask#getConvention(), org.gradle.api.internal.ConventionTask#getTaskIdentity(), org.gradle.api.internal.ConventionTask#getSharedResources(), org.gradle.api.internal.ConventionTask#getIdentityPath(), org.gradle.api.internal.ConventionTask#wait(long), org.gradle.api.internal.ConventionTask#wait(long, int), org.gradle.api.internal.ConventionTask#wait(), org.gradle.api.internal.ConventionTask#equals(java.lang.Object), org.gradle.api.internal.ConventionTask#toString(), org.gradle.api.internal.ConventionTask#hashCode(), org.gradle.api.internal.ConventionTask#getClass(), org.gradle.api.internal.ConventionTask#notify(), org.gradle.api.internal.ConventionTask#notifyAll() |
Symbol used when mergeSignatures disabled and so multiple signatures produced (according to input signatures count). This is used for signature caching for check task so it could print real signature name in output without cache signature name.
Animalsniffer ant task does not allow empty files, but, in some cases, it could happen. For example, when two or more signatures must be merged. In this case plugin could specify fake file together with it's exclusion from resulted signature to overcome ant task limitation.
Option exists only to be able to switch off empty files workaround. It may be required due to security restrictions which could lead to source jar resolution failure (not the case for most environments).
The class path containing the Animal Sniffer library to be used. Default set by plugin.
Configuration debug output
Exclude packages ('com.sun.*')
Compiled classes and jars. Ant task requires files, but plugin will overcome this with fake files ({
Include only packages ('com.java.*')
When multiple signatures provided they will be merged. If merge disabled, multiple signatures will be provided for each incoming signature.
This is very special case used internally for classpath caching when multiple signatures used for check task.
Output signatures directory.
Output signature name. If extension is not set then '.sig' extension will be used. By default, equal to task name (set by plugin).
Note: when mergeSignatures is false, provided name is used as base to create multiple names (by adding _!signatureName postfix).
Signature files to extend.
Use to exclude classes in resulted signature. For example: specify 'com.sun.*' to exclude 'com.sun' package and all it's sub packages.
Method may be called multiple times - all inputs will aggregate.
path - class names or package maskFiles to use for signature generation. Includes classes (compiled) or jars. Internally org.gradle.api.Project#files(java.lang.Object ...) is used so any definition may be used, supported by gradle method.
Method may be called multiple times - all inputs will aggregate.
Common cases:
input - input files (classes ot jars) It is intentional that property is not annotated with @OutputFiles!
Task output depends on inputs (number of produced signatures and their names rely on configured signatures). Since gradle 4 task output property can't force dependency resolution, but in most cases input signatures are configured with 'signature' configuration. This makes impossible computation of exact output file names before execution (such computation was implemented in plugin version 1.4).
Due to this limitation, task declares only output directory as task output. But that means that
task.outputs.files can't be used, because it will contain only output directory (itself).
But it's a very handy to rely on task output files, and this method should be used instead of
outputs mechanism (task.outputFiles) to configure produced signatures in other tasks.
Use to include only defined classes in resulted signature. For example: specify 'com.java.*' to include only 'com.java' package and all it's sub packages.
Method may be called multiple times - all inputs will aggregate.
path - class names or package maskSignatures to extend from (use all definitions from signature). May be used only together with files definition (for example, you can't just merge multiple signatures; this is ant task limitation).
Method may be called multiple times - all inputs will aggregate.
Plugin register special 'signature' configuration to use for signatures definition and it makes sense to use
it for signatures definition for build task. In this case, use configurations.signature to add
all defined signatures.
Internally org.gradle.api.Project#files(java.lang.Object ...) is used so any definition may be used, supported by gradle method.
signature - base signaturesGroovy Documentation