idfc-proguard:obfuscate

Full name:

com.idfconnect.devtools:idfc-proguard-maven-plugin:1.0.1:obfuscate

Description:

A Maven 3.1 plug-in for using ProGuard to obfuscate project artifacts

Attributes:

  • Requires a Maven project to be executed.
  • Requires dependency resolution of artifacts in scope: compile+runtime.
  • Binds by default to the lifecycle phase: process-classes.

Required Parameters

Name Type Since Description
buildDirectory File - Base directory for all operations. Defaults to ${project.build.directory}.
Default value is: ${project.build.directory}.
User property is: proguard.builddir.
proguardOutputDirectory File - Output directory for ProGuard files, such as the mapping file. Defaults to ${project.build.directory}/proguard.
Default value is: ${project.build.directory}/proguard.
User property is: proguard.output.

Optional Parameters

Name Type Since Description
defaultOutputArtifactClassifier String - Specifies the default output artifact Classifier. The default value is "small".
Default value is: small.
dontattach boolean - Set this to 'true' to bypass attaching any resulting artifacts
Default value is: false.
User property is: proguard.dontattach.
dontwarn boolean - Tells ProGuard not to error out if there are unresolved references to classes or interfaces. Defaults to false
Default value is: false.
excludeLibraryArtifacts List - Coordinates of project dependencies which should be explicitly excluded from libraryjars. Note that this parameter has no effect if the parameter includeDependencies is set to false
excludeManifests boolean - Automatically exclude via ProGuard filter the manifests from any injars. Note that if this is set to false, such a filter may still be included explicitly on any injar entry
Default value is: true.
excludeMavenDescriptor boolean - Set to false to include META-INF/maven/**
Default value is: true.
ignoreIncludeFile boolean - Set this to 'true' to disable the parameter proguardInclude
Default value is: false.
User property is: proguard.ignoreincludefile.
includeDependencies boolean - Specifies that project compile dependencies should be automatically added as libraryjars
Default value is: true.
includeJreRuntimeJar boolean - Automatically adds the java runtime jar ${java.home}/lib/rt.jar to the ProGuard libraryjars. Defaults to true.
Default value is: true.
injarNotExistsSkip boolean - Set this to 'true' to bypass ProGuard processing if any injars entries do not exists
Default value is: false.
inputArtifacts List - This parameter will generate additional injars input entries to ProGuard from the project artifacts. Set the artifact names in coordinate String form, e.g. com.idfconnect.someproject:SomeLibrary to pull it from the project dependencies. The version does not need to be included in the String. The artifact must already be a resolved dependency in the project - the plugin will not attempt to resolve the artifact.
inputFile String - Specifies the primary input file name (e.g. classes folder, jar, war, ear, zip, etc.) to be processed. This defaults to the typical output of the packaging phase, which is ${project.build.finalName}.${project.packaging}. However, if you are obfuscating before the packaging phase, you would typically want to set this to ${project.build.outputDirectory} instead to indicate the classes directory. If a relative path is specified, it will be relative to the base directory.
Default value is: ${project.build.finalName}.${project.packaging}.
inputFileFilter String - Specifies the ProGuard-syntax input filter to apply to the input file. Note that this only applies to the input file. It does not apply to other jars specified via inputArtifacts or inputJarPaths.
inputJarPaths List - Additional external (e.g. non-artifact) input to include to Proguard as injars parameters. Note that the preferred way to include input is referencing dependent artifacts with the inputArtifacts element. You may optionally specify a ProGuard input filter at the end of each path
libraryArtifacts List - A list of additional project artifacts, specified by coordinate Strings, e.g. javax.servlet:javax.servlet-api:3.0.1, to be included as libraryjars parameters to ProGuard. The version must be included in the coordinates. The plugin will attempt to resolve the artifact, so the artifact need not be a dependency in the project. Also note that by default all project resolved dependencies are already automatically added by the plugin and do not need to be explicitly configured with this parameter.
libraryJarPaths List - Additional external (e.g. non-artifact) libraries to include to Proguard as libraryjars parameters, e.g. ${java.home}/lib/jsse.jar. Note that the preferred way to specify jars is referencing dependent artifacts with the libraryArtifacts element.
obfuscate boolean - Specifies to obfuscate the input class files. Setting this to false sets the ProGuard option -dontobfuscate
Default value is: true.
options Map - Other arbitrary ProGuard configuration options
outJars List - Explicitly sets the ProGuard outjars parameter, in addition to those values generated by the outputArtifacts element. If not specified, the default for outputArtifacts will be used
outputArtifacts List - Specifies the output artifacts that ProGuard will produce. These are specified in the form of artifacts. If no output artifacts are specified, then the plugin will create a single default output artifact of the form ${project.build.finalName}-${project.version}-small.${project.packaging}. Note the default classifier: "small"
printMapping boolean - Indicates whether printmapping should be specified. Defaults to true.
Default value is: true.
printMappingAttachAsArtifact boolean - Indicates whether the ProGuard printmapping file should be attached to the project as an artifact. Defaults to true.
Default value is: true.
printMappingFile String - Filename to use with printmapping. Defaults to proguard.map
Default value is: proguard.map.
printSeeds boolean - Indicates whether printseeds should be specified. Defaults to false.
Default value is: false.
printSeedsAttachAsArtifact boolean - Indicates whether the ProGuard printseeds file should be attached to the project as an artifact. Defaults to false.
Default value is: false.
printSeedsFile String - Filename to use with printseeds. Defaults to proguard.seeds
Default value is: proguard.seeds.
proguardIncludeFile String - Includes additional ProGuard configuration options from the provided file. This defaults to ${basedir}/src/main/config/${project.artifactId}-maven.pro. If no such file exists, the parameter is ignored. This behavior can be disabled by the parameter ignoreIncludeFile
Default value is: ${basedir}/src/main/config/${project.artifactId}-maven.pro.
shrink boolean - Specifies not to shrink the input class files. Setting this to false sets the ProGuard option -dontshrink
Default value is: true.
skip boolean - Set this to 'true' to bypass ProGuard processing entirely.
Default value is: false.
User property is: proguard.skip.
test boolean - Set this to 'true' to test the plug-in without launching ProGuard. This will simply show you how the plug-in builds the ProGuard invocation arguments
Default value is: false.
User property is: proguard.test.
useDefaultOutputArtifactClassifiers boolean - Indicates whether the output artifacts should have the default classifier appended to their filenames if they don't explicity set a classifier value. Default value is true.
Default value is: true.

Parameter Details

buildDirectory:

Base directory for all operations. Defaults to ${project.build.directory}.
  • Type: java.io.File
  • Required: Yes
  • User Property: proguard.builddir
  • Default: ${project.build.directory}

defaultOutputArtifactClassifier:

Specifies the default output artifact Classifier. The default value is "small".
  • Type: java.lang.String
  • Required: No
  • Default: small

dontattach:

Set this to 'true' to bypass attaching any resulting artifacts
  • Type: boolean
  • Required: No
  • User Property: proguard.dontattach
  • Default: false

dontwarn:

Tells ProGuard not to error out if there are unresolved references to classes or interfaces. Defaults to false
  • Type: boolean
  • Required: No
  • Default: false

excludeLibraryArtifacts:

Coordinates of project dependencies which should be explicitly excluded from libraryjars. Note that this parameter has no effect if the parameter includeDependencies is set to false
  • Type: java.util.List
  • Required: No

excludeManifests:

Automatically exclude via ProGuard filter the manifests from any injars. Note that if this is set to false, such a filter may still be included explicitly on any injar entry
  • Type: boolean
  • Required: No
  • Default: true

excludeMavenDescriptor:

Set to false to include META-INF/maven/**
  • Type: boolean
  • Required: No
  • Default: true

ignoreIncludeFile:

Set this to 'true' to disable the parameter proguardInclude
  • Type: boolean
  • Required: No
  • User Property: proguard.ignoreincludefile
  • Default: false

includeDependencies:

Specifies that project compile dependencies should be automatically added as libraryjars
  • Type: boolean
  • Required: No
  • Default: true

includeJreRuntimeJar:

Automatically adds the java runtime jar ${java.home}/lib/rt.jar to the ProGuard libraryjars. Defaults to true.
  • Type: boolean
  • Required: No
  • Default: true

injarNotExistsSkip:

Set this to 'true' to bypass ProGuard processing if any injars entries do not exists
  • Type: boolean
  • Required: No
  • Default: false

inputArtifacts:

This parameter will generate additional injars input entries to ProGuard from the project artifacts. Set the artifact names in coordinate String form, e.g. com.idfconnect.someproject:SomeLibrary to pull it from the project dependencies. The version does not need to be included in the String. The artifact must already be a resolved dependency in the project - the plugin will not attempt to resolve the artifact.
  • Type: java.util.List
  • Required: No

inputFile:

Specifies the primary input file name (e.g. classes folder, jar, war, ear, zip, etc.) to be processed. This defaults to the typical output of the packaging phase, which is ${project.build.finalName}.${project.packaging}. However, if you are obfuscating before the packaging phase, you would typically want to set this to ${project.build.outputDirectory} instead to indicate the classes directory. If a relative path is specified, it will be relative to the base directory.
  • Type: java.lang.String
  • Required: No
  • Default: ${project.build.finalName}.${project.packaging}

inputFileFilter:

Specifies the ProGuard-syntax input filter to apply to the input file. Note that this only applies to the input file. It does not apply to other jars specified via inputArtifacts or inputJarPaths.
  • Type: java.lang.String
  • Required: No

inputJarPaths:

Additional external (e.g. non-artifact) input to include to Proguard as injars parameters. Note that the preferred way to include input is referencing dependent artifacts with the inputArtifacts element. You may optionally specify a ProGuard input filter at the end of each path
  • Type: java.util.List
  • Required: No

libraryArtifacts:

A list of additional project artifacts, specified by coordinate Strings, e.g. javax.servlet:javax.servlet-api:3.0.1, to be included as libraryjars parameters to ProGuard. The version must be included in the coordinates. The plugin will attempt to resolve the artifact, so the artifact need not be a dependency in the project. Also note that by default all project resolved dependencies are already automatically added by the plugin and do not need to be explicitly configured with this parameter.
  • Type: java.util.List
  • Required: No

libraryJarPaths:

Additional external (e.g. non-artifact) libraries to include to Proguard as libraryjars parameters, e.g. ${java.home}/lib/jsse.jar. Note that the preferred way to specify jars is referencing dependent artifacts with the libraryArtifacts element.
  • Type: java.util.List
  • Required: No

obfuscate:

Specifies to obfuscate the input class files. Setting this to false sets the ProGuard option -dontobfuscate
  • Type: boolean
  • Required: No
  • Default: true

options:

Other arbitrary ProGuard configuration options
  • Type: java.util.Map
  • Required: No

outJars:

Explicitly sets the ProGuard outjars parameter, in addition to those values generated by the outputArtifacts element. If not specified, the default for outputArtifacts will be used
  • Type: java.util.List
  • Required: No

outputArtifacts:

Specifies the output artifacts that ProGuard will produce. These are specified in the form of artifacts. If no output artifacts are specified, then the plugin will create a single default output artifact of the form ${project.build.finalName}-${project.version}-small.${project.packaging}. Note the default classifier: "small"
  • Type: java.util.List
  • Required: No

printMapping:

Indicates whether printmapping should be specified. Defaults to true.
  • Type: boolean
  • Required: No
  • Default: true

printMappingAttachAsArtifact:

Indicates whether the ProGuard printmapping file should be attached to the project as an artifact. Defaults to true.
  • Type: boolean
  • Required: No
  • Default: true

printMappingFile:

Filename to use with printmapping. Defaults to proguard.map
  • Type: java.lang.String
  • Required: No
  • Default: proguard.map

printSeeds:

Indicates whether printseeds should be specified. Defaults to false.
  • Type: boolean
  • Required: No
  • Default: false

printSeedsAttachAsArtifact:

Indicates whether the ProGuard printseeds file should be attached to the project as an artifact. Defaults to false.
  • Type: boolean
  • Required: No
  • Default: false

printSeedsFile:

Filename to use with printseeds. Defaults to proguard.seeds
  • Type: java.lang.String
  • Required: No
  • Default: proguard.seeds

proguardIncludeFile:

Includes additional ProGuard configuration options from the provided file. This defaults to ${basedir}/src/main/config/${project.artifactId}-maven.pro. If no such file exists, the parameter is ignored. This behavior can be disabled by the parameter ignoreIncludeFile
  • Type: java.lang.String
  • Required: No
  • Default: ${basedir}/src/main/config/${project.artifactId}-maven.pro

proguardOutputDirectory:

Output directory for ProGuard files, such as the mapping file. Defaults to ${project.build.directory}/proguard.
  • Type: java.io.File
  • Required: Yes
  • User Property: proguard.output
  • Default: ${project.build.directory}/proguard

shrink:

Specifies not to shrink the input class files. Setting this to false sets the ProGuard option -dontshrink
  • Type: boolean
  • Required: No
  • Default: true

skip:

Set this to 'true' to bypass ProGuard processing entirely.
  • Type: boolean
  • Required: No
  • User Property: proguard.skip
  • Default: false

test:

Set this to 'true' to test the plug-in without launching ProGuard. This will simply show you how the plug-in builds the ProGuard invocation arguments
  • Type: boolean
  • Required: No
  • User Property: proguard.test
  • Default: false

useDefaultOutputArtifactClassifiers:

Indicates whether the output artifacts should have the default classifier appended to their filenames if they don't explicity set a classifier value. Default value is true.
  • Type: boolean
  • Required: No
  • Default: true