All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jayway.maven.plugins.android.standalonemojos.HelpMojo Maven / Gradle / Ivy

There is a newer version: 4.0.0-rc.2
Show newest version
package com.jayway.maven.plugins.android.standalonemojos;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;

/**
 * Display help information on android-maven-plugin.
Call
  mvn android:help -Ddetail=true -Dgoal=<goal-name>
to display parameter details. * * @version generated on Fri Nov 08 17:36:40 PST 2013 * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.8) * @goal help * @requiresProject false * @threadSafe */ public class HelpMojo extends AbstractMojo { /** * If true, display all settable properties for each goal. * * @parameter expression="${detail}" default-value="false" */ private boolean detail; /** * The name of the goal for which to show help. If unspecified, all goals will be displayed. * * @parameter expression="${goal}" */ private java.lang.String goal; /** * The maximum length of a display line, should be positive. * * @parameter expression="${lineLength}" default-value="80" */ private int lineLength; /** * The number of spaces per indentation level, should be positive. * * @parameter expression="${indentSize}" default-value="2" */ private int indentSize; /** {@inheritDoc} */ public void execute() throws MojoExecutionException { if ( lineLength <= 0 ) { getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." ); lineLength = 80; } if ( indentSize <= 0 ) { getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." ); indentSize = 2; } StringBuffer sb = new StringBuffer(); append( sb, "com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.8.0", 0 ); append( sb, "", 0 ); append( sb, "Android Maven Plugin - android-maven-plugin", 0 ); append( sb, "Maven Plugin for Android Development", 1 ); append( sb, "", 0 ); if ( goal == null || goal.length() <= 0 ) { append( sb, "This plugin has 32 goals:", 0 ); append( sb, "", 0 ); } if ( goal == null || goal.length() <= 0 || "aar".equals( goal ) ) { append( sb, "android:aar", 0 ); append( sb, "Creates an Android Archive (aar) file.\n", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "applicationMakefile", 2 ); append( sb, "Specifies the application makefile to use for the build (if other than the default Application.mk).", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "classesJarExcludes", 2 ); append( sb, "Specifies the files that should be excluded from the classes.jar within the aar", 3 ); append( sb, "", 0 ); append( sb, "classesJarIncludes", 2 ); append( sb, "Specifies the files that should be included in the classes.jar within the aar", 3 ); append( sb, "", 0 ); append( sb, "classifier", 2 ); append( sb, "Classifier to add to the artifact generated. If given, the artifact will be an attachment instead.\n", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "ndkArchitecture", 2 ); append( sb, "Defines the architecture for the NDK build", 3 ); append( sb, "Expression: ${android.ndk.build.architecture}", 3 ); append( sb, "", 0 ); append( sb, "ndkClassifier", 2 ); append( sb, "Specifies the classifier with which the artifact should be stored in the repository", 3 ); append( sb, "Expression: ${android.ndk.build.native-classifier}", 3 ); append( sb, "", 0 ); append( sb, "ndkOutputDirectory (Default: ${project.build.directory}/ndk-libs)", 2 ); append( sb, "Build folder to place built native libraries into", 3 ); append( sb, "Expression: ${android.ndk.build.ndk-output-directory}", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "apk".equals( goal ) ) { append( sb, "android:apk", 0 ); append( sb, "Creates the apk file. By default signs it with debug keystore.\nChange that by setting configuration parameter false.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "apk", 2 ); append( sb, "Embedded configuration of this mojo.", 3 ); append( sb, "", 0 ); append( sb, "apkDebug", 2 ); append( sb, "Defines whether or not the APK is being produced in debug mode or not.", 3 ); append( sb, "Expression: ${android.apk.debug}", 3 ); append( sb, "", 0 ); append( sb, "apkMetaIncludes", 2 ); append( sb, "Pattern for additional META-INF resources to be packaged into the apk.\nThe APK builder filters these resources and doesn\'t include them into the apk. This leads to bad behaviour of dependent libraries relying on these resources, for instance service discovery doesn\'t work.\nBy specifying this pattern, the android plugin adds these resources to the final apk.\n\nThe pattern is relative to META-INF, i.e. one must use\n\n\n\u00a0\u00a0\u00a0\u00a0services/**\n\n\n... instead of\n\n\u00a0\u00a0\u00a0\u00a0META-INF/services/**\n\n\n\nSee also Issue 97\n", 3 ); append( sb, "Expression: ${android.apk.metaIncludes}", 3 ); append( sb, "", 0 ); append( sb, "apkNativeToolchain", 2 ); append( sb, "(no description available)", 3 ); append( sb, "Expression: ${android.nativeToolchain}", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "classifier", 2 ); append( sb, "Classifier to add to the artifact generated. If given, the artifact will be an attachment instead.\n", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "excludeJarResources", 2 ); append( sb, "Specify a list of patterns that are matched against the names of jar file dependencies. Matching jar files will not have their resources added to the resulting APK. The patterns are standard Java regexes.", 3 ); append( sb, "", 0 ); append( sb, "extractDuplicates (Default: false)", 2 ); append( sb, "Allows to detect and extract the duplicate files from embedded jars. In that case, the plugin analyzes the content of all embedded dependencies and checks they are no duplicates inside those dependencies. Indeed, Android does not support duplicates, and all dependencies are inlined in the APK. If duplicates files are found, the resource is kept in the first dependency and removes from others.\n", 3 ); append( sb, "Expression: ${android.extractDuplicates}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDependenciesHardwareArchitectureDefault (Default: armeabi)", 2 ); append( sb, "Default hardware architecture for native library dependencies (with <type>so</type>) without a classifier.\n\nValid values currently include armeabi, armeabi-v7a, mips and x86.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDependenciesHardwareArchitectureDefault}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "ndkFinalLibraryName", 2 ); append( sb, "Specifies the final name of the library output by the build (this allows", 3 ); append( sb, "Expression: ${android.ndk.build.build.final-library.name}", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameInstrumentationTargetPackage", 2 ); append( sb, "Rewrite the manifest so that all of its instrumentation components target the given package. This value will be passed on to the aapt parameter --rename-instrumentation-target-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameInstrumentationTargetPackage}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "sign", 2 ); append( sb, "How to sign the apk.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0auto\n\n\nValid values for are:\n\n-\ttrue = sign with the debug keystore.\n-\tfalse = don\'t sign with the debug keystore.\n-\tboth = create a signed as well as an unsigned apk.\n-\tauto (default) = sign with debug keystore, unless another keystore is defined. (Signing with other keystores is not yet implemented. See Issue 2.)\n\n\n\nCan also be configured from command-line with parameter -Dandroid.sign.debug.\n", 3 ); append( sb, "", 0 ); append( sb, "sourceDirectories", 2 ); append( sb, "Additional source directories that contain resources to be packaged into the apk.\n\nThese are not source directories, that contain java classes to be compiled. It corresponds to the -df option of the apkbuilder program. It allows you to specify directories, that contain additional resources to be packaged into the apk.\nSo an example inside the plugin configuration could be:\n\n\u00a0\u00a0...\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0${project.basedir}/additionals\n\u00a0\u00a0\n\u00a0\u00a0...\n\n", 3 ); append( sb, "Expression: ${android.sourceDirectories}", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "apklib".equals( goal ) ) { append( sb, "android:apklib", 0 ); append( sb, "Creates the apklib file.\napklib files do not generate deployable artifacts.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "applicationMakefile", 2 ); append( sb, "Specifies the application makefile to use for the build (if other than the default Application.mk).", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "classifier", 2 ); append( sb, "Classifier to add to the artifact generated. If given, the artifact will be an attachment instead.\n", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "ndkArchitecture", 2 ); append( sb, "Defines the architecture for the NDK build", 3 ); append( sb, "Expression: ${android.ndk.build.architecture}", 3 ); append( sb, "", 0 ); append( sb, "ndkClassifier", 2 ); append( sb, "Specifies the classifier with which the artifact should be stored in the repository", 3 ); append( sb, "Expression: ${android.ndk.build.native-classifier}", 3 ); append( sb, "", 0 ); append( sb, "ndkOutputDirectory (Default: ${project.build.directory}/ndk-libs)", 2 ); append( sb, "Build folder to place built native libraries into", 3 ); append( sb, "Expression: ${android.ndk.build.ndk-output-directory}", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "clean".equals( goal ) ) { append( sb, "android:clean", 0 ); append( sb, "(no description available)", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "ndkBuildLibsOutputDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "(no description available)", 3 ); append( sb, "Expression: ${android.nativeBuildLibsOutputDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndkBuildObjOutputDirectory (Default: ${project.basedir}/obj)", 2 ); append( sb, "(no description available)", 3 ); append( sb, "Expression: ${android.nativeBuildObjOutputDirectory}", 3 ); append( sb, "", 0 ); append( sb, "skipBuildLibsOutputDirectory (Default: true)", 2 ); append( sb, "Specifies whether the deletion of the libs/ folder structure should be skipped. This is by default set to skip (true) to avoid unwanted deletions of libraries already present in this structure.", 3 ); append( sb, "Expression: ${android.nativeBuildSkipCleanLibsOutputDirectory}", 3 ); append( sb, "", 0 ); append( sb, "skipBuildObjsOutputDirectory (Default: false)", 2 ); append( sb, "Specifies whether the obj/ build folder structure should be deleted.", 3 ); append( sb, "Expression: ${android.nativeBuildSkipCleanLibsOutputDirectory}", 3 ); append( sb, "", 0 ); append( sb, "skipClean (Default: false)", 2 ); append( sb, "Forces the clean process to be skipped.", 3 ); append( sb, "Expression: ${android.nativeBuildSkipClean}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "consume-aar".equals( goal ) ) { append( sb, "android:consume-aar", 0 ); append( sb, "(no description available)", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "deploy".equals( goal ) ) { append( sb, "android:deploy", 0 ); append( sb, "Deploys the built apk file, or another specified apk, to a connected device.\nAutomatically performed when running mvn integration-test (or mvn install) on a project with instrumentation tests.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "file", 2 ); append( sb, "Optionally used to specify a different apk file to deploy to a connected emulator or usb device, instead of the built apk from this project.", 3 ); append( sb, "Expression: ${android.file}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "deploy-dependencies".equals( goal ) ) { append( sb, "android:deploy-dependencies", 0 ); append( sb, "Deploys all directly declared dependencies of apk in this project\'s pom.\nUsually used in a project with instrumentation tests, to deploy the apk to test onto the device before running the deploying and running the instrumentation tests apk.\nAutomatically performed when running mvn integration-test (or mvn install) on a project with instrumentation tests.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "devices".equals( goal ) ) { append( sb, "android:devices", 0 ); append( sb, "DevicesMojo lists all attached devices and emulators found with the android debug bridge. It uses the same naming convention for the emulator as used in other places in the Android Maven Plugin and adds the status of the device in the list. TODO The goal is very simple and could be enhanced for better display, a verbose option to display and to take the android.device paramter into account.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "dex".equals( goal ) ) { append( sb, "android:dex", 0 ); append( sb, "Converts compiled Java classes to the Android dex format.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "dex", 2 ); append( sb, "Configuration for the dex command execution. It can be configured in the plugin configuration like so\n\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0-Xms256m\n\u00a0\u00a0\u00a0\u00a0-Xmx512m\n\u00a0\u00a0\n\u00a0\u00a0true|false\n\u00a0\u00a0true|false\n\u00a0\u00a0true|false\n\u00a0\u00a0true|false\n\u00a0\u00a0path\u00a0to\u00a0predexed\u00a0libraries,\u00a0defaults\u00a0to\u00a0target/dexedLibs\n\u00a0\u00a0true|false\n\nor via properties dex.* or command line parameters android.dex.*", 3 ); append( sb, "", 0 ); append( sb, "dexCoreLibrary (Default: false)", 2 ); append( sb, "Decides whether to pass the --core-library flag to dx.", 3 ); append( sb, "Expression: ${android.dex.coreLibrary}", 3 ); append( sb, "", 0 ); append( sb, "dexIncremental (Default: false)", 2 ); append( sb, "Decides whether to pass the --incremental flag to dx.", 3 ); append( sb, "Expression: ${android.dex.incremental}", 3 ); append( sb, "", 0 ); append( sb, "dexJvmArguments (Default: -Xmx1024M)", 2 ); append( sb, "Extra JVM Arguments. Using these you can e.g. increase memory for the jvm running the build.", 3 ); append( sb, "Expression: ${android.dex.jvmArguments}", 3 ); append( sb, "", 0 ); append( sb, "dexNoLocals (Default: false)", 2 ); append( sb, "Decides whether to pass the --no-locals flag to dx.", 3 ); append( sb, "Expression: ${android.dex.noLocals}", 3 ); append( sb, "", 0 ); append( sb, "dexOptimize (Default: true)", 2 ); append( sb, "Decides whether to pass the --no-optimize flag to dx.", 3 ); append( sb, "Expression: ${android.dex.optimize}", 3 ); append( sb, "", 0 ); append( sb, "dexPreDex (Default: false)", 2 ); append( sb, "Decides whether to predex the jars.", 3 ); append( sb, "Expression: ${android.dex.predex}", 3 ); append( sb, "", 0 ); append( sb, "dexPreDexLibLocation (Default: ${project.build.directory}${file.separator}dexedLibs)", 2 ); append( sb, "Path to predexed libraries.", 3 ); append( sb, "Expression: ${android.dex.dexPreDexLibLocation}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "emma".equals( goal ) ) { append( sb, "android:emma", 0 ); append( sb, "After compiled Java classes use emma tool", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "emma", 2 ); append( sb, "Configuration for the emma command execution. It can be configured in the plugin configuration like so\n\n\u00a0\u00a0true|false\n\u00a0\u00a0${project}/target/classes\n\u00a0\u00a0${project}/target/emma/coverage.em\n\u00a0\u00a0${project}emma\u00a0filterlt;/filters>\n\nor via properties emma.* or command line parameters android.emma.*", 3 ); append( sb, "", 0 ); append( sb, "emmaClassFolders (Default: ${project.build.directory}/classes/)", 2 ); append( sb, "Configure directory where compiled classes are.", 3 ); append( sb, "Expression: ${android.emma.classFolders}", 3 ); append( sb, "", 0 ); append( sb, "emmaEnable (Default: false)", 2 ); append( sb, "Decides whether to enable or not enable emma.", 3 ); append( sb, "Expression: ${android.emma.enable}", 3 ); append( sb, "", 0 ); append( sb, "emmaFilters", 2 ); append( sb, "Emma filter. Refer to the emma syntax for filters.", 3 ); append( sb, "Expression: ${android.emma.filters}", 3 ); append( sb, "", 0 ); append( sb, "emmaOutputMetaFile (Default: ${project.build.directory}/emma/coverage.em)", 2 ); append( sb, "Path of the emma meta data file (.em).", 3 ); append( sb, "Expression: ${android.emma.outputMetaFile}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "emulator-start".equals( goal ) ) { append( sb, "android:emulator-start", 0 ); append( sb, "EmulatorStartMojo can start the Android Emulator with a specified Android Virtual Device (avd).", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "emulator", 2 ); append( sb, "Configuration for the emulator goals. Either use the plugin configuration like this\n\n\u00a0\u00a0Default\n\u00a0\u00a020000\n\u00a0\u00a0-no-skin\n\u00a0\u00a0emulator-arm\n\nor configure as properties on the command line as android.emulator.avd, android.emulator.wait, android.emulator.options and android.emulator.executable or in pom or settings file as emulator.avd, emulator.wait and emulator.options.", 3 ); append( sb, "", 0 ); append( sb, "emulatorAvd", 2 ); append( sb, "Name of the Android Virtual Device (emulatorAvd) that will be started by the emulator. Default value is \'Default\'", 3 ); append( sb, "Expression: ${android.emulator.avd}", 3 ); append( sb, "", 0 ); append( sb, "emulatorExecutable", 2 ); append( sb, "Override default emulator executable. Default uses just \'emulator\'.", 3 ); append( sb, "Expression: ${android.emulator.executable}", 3 ); append( sb, "", 0 ); append( sb, "emulatorOptions", 2 ); append( sb, "Additional command line options for the emulator start up. This option can be used to pass any additional options desired to the invocation of the emulator. Use emulator -help for more details. An example would be \'-no-skin\'.", 3 ); append( sb, "Expression: ${android.emulator.options}", 3 ); append( sb, "", 0 ); append( sb, "emulatorUnlock (Default: false)", 2 ); append( sb, "Unlock the emulator after it is started.", 3 ); append( sb, "Expression: ${android.emulatorUnlock}", 3 ); append( sb, "", 0 ); append( sb, "emulatorWait", 2 ); append( sb, "Wait time for the emulator start up.", 3 ); append( sb, "Expression: ${android.emulator.wait}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "emulator-stop".equals( goal ) ) { append( sb, "android:emulator-stop", 0 ); append( sb, "EmulatorStartMojo can stop the Android Emulator with a specified Android Virtual Device (avd).", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "emulator", 2 ); append( sb, "Configuration for the emulator goals. Either use the plugin configuration like this\n\n\u00a0\u00a0Default\n\u00a0\u00a020000\n\u00a0\u00a0-no-skin\n\u00a0\u00a0emulator-arm\n\nor configure as properties on the command line as android.emulator.avd, android.emulator.wait, android.emulator.options and android.emulator.executable or in pom or settings file as emulator.avd, emulator.wait and emulator.options.", 3 ); append( sb, "", 0 ); append( sb, "emulatorAvd", 2 ); append( sb, "Name of the Android Virtual Device (emulatorAvd) that will be started by the emulator. Default value is \'Default\'", 3 ); append( sb, "Expression: ${android.emulator.avd}", 3 ); append( sb, "", 0 ); append( sb, "emulatorExecutable", 2 ); append( sb, "Override default emulator executable. Default uses just \'emulator\'.", 3 ); append( sb, "Expression: ${android.emulator.executable}", 3 ); append( sb, "", 0 ); append( sb, "emulatorOptions", 2 ); append( sb, "Additional command line options for the emulator start up. This option can be used to pass any additional options desired to the invocation of the emulator. Use emulator -help for more details. An example would be \'-no-skin\'.", 3 ); append( sb, "Expression: ${android.emulator.options}", 3 ); append( sb, "", 0 ); append( sb, "emulatorUnlock (Default: false)", 2 ); append( sb, "Unlock the emulator after it is started.", 3 ); append( sb, "Expression: ${android.emulatorUnlock}", 3 ); append( sb, "", 0 ); append( sb, "emulatorWait", 2 ); append( sb, "Wait time for the emulator start up.", 3 ); append( sb, "Expression: ${android.emulator.wait}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "emulator-stop-all".equals( goal ) ) { append( sb, "android:emulator-stop-all", 0 ); append( sb, "EmulatorStopeAllMojo will stop all attached devices.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "emulator", 2 ); append( sb, "Configuration for the emulator goals. Either use the plugin configuration like this\n\n\u00a0\u00a0Default\n\u00a0\u00a020000\n\u00a0\u00a0-no-skin\n\u00a0\u00a0emulator-arm\n\nor configure as properties on the command line as android.emulator.avd, android.emulator.wait, android.emulator.options and android.emulator.executable or in pom or settings file as emulator.avd, emulator.wait and emulator.options.", 3 ); append( sb, "", 0 ); append( sb, "emulatorAvd", 2 ); append( sb, "Name of the Android Virtual Device (emulatorAvd) that will be started by the emulator. Default value is \'Default\'", 3 ); append( sb, "Expression: ${android.emulator.avd}", 3 ); append( sb, "", 0 ); append( sb, "emulatorExecutable", 2 ); append( sb, "Override default emulator executable. Default uses just \'emulator\'.", 3 ); append( sb, "Expression: ${android.emulator.executable}", 3 ); append( sb, "", 0 ); append( sb, "emulatorOptions", 2 ); append( sb, "Additional command line options for the emulator start up. This option can be used to pass any additional options desired to the invocation of the emulator. Use emulator -help for more details. An example would be \'-no-skin\'.", 3 ); append( sb, "Expression: ${android.emulator.options}", 3 ); append( sb, "", 0 ); append( sb, "emulatorUnlock (Default: false)", 2 ); append( sb, "Unlock the emulator after it is started.", 3 ); append( sb, "Expression: ${android.emulatorUnlock}", 3 ); append( sb, "", 0 ); append( sb, "emulatorWait", 2 ); append( sb, "Wait time for the emulator start up.", 3 ); append( sb, "Expression: ${android.emulator.wait}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "generate-sources".equals( goal ) ) { append( sb, "android:generate-sources", 0 ); append( sb, "Generates R.java based on resources specified by the resources configuration parameter. Generates java files based on aidl files.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "genDirectory (Default: ${project.build.directory}/generated-sources/r)", 2 ); append( sb, "Override default generated folder containing R.java", 3 ); append( sb, "Expression: ${android.genDirectory}", 3 ); append( sb, "", 0 ); append( sb, "genDirectoryAidl (Default: ${project.build.directory}/generated-sources/aidl)", 2 ); append( sb, "Override default generated folder containing aidl classes", 3 ); append( sb, "Expression: ${android.genDirectoryAidl}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "mergeManifests (Default: false)", 2 ); append( sb, "Override default merging. You must have SDK Tools r20+\n\nIMPORTANT: The resource plugin needs to be disabled for the process-resources phase, so the \'default-resources\' execution must be added. Without this the non-merged manifest will get re-copied to the build directory.\n\nThe androidManifestFile should also be configured to pull from the build directory so that later phases will pull the merged manifest file.\n\nExample POM Setup:\n\n\n\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0maven-resources-plugin\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a02.6\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0initialize\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0resources\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0default-resources\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DISABLED\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0com.jayway.maven.plugins.android.generation2\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0android-maven-plugin\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0${project.build.directory}/AndroidManifest.xml\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0...\n\n\nYou can filter the pre-merged APK manifest. One important note about Eclipse, Eclipse will replace the merged manifest with a filtered pre-merged version when the project is refreshed. If you want to review the filtered merged version then you will need to open it outside Eclipse without refreshing the project in Eclipse.\n\n\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0${project.build.directory}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0${basedir}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0AndroidManifest.xml\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\n\n", 3 ); append( sb, "Expression: ${android.mergeManifests}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "help".equals( goal ) ) { append( sb, "android:help", 0 ); append( sb, "Display help information on android-maven-plugin.\nCall\n\u00a0\u00a0mvn\u00a0android:help\u00a0-Ddetail=true\u00a0-Dgoal=\nto display parameter details.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "detail (Default: false)", 2 ); append( sb, "If true, display all settable properties for each goal.", 3 ); append( sb, "Expression: ${detail}", 3 ); append( sb, "", 0 ); append( sb, "goal", 2 ); append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 ); append( sb, "Expression: ${goal}", 3 ); append( sb, "", 0 ); append( sb, "indentSize (Default: 2)", 2 ); append( sb, "The number of spaces per indentation level, should be positive.", 3 ); append( sb, "Expression: ${indentSize}", 3 ); append( sb, "", 0 ); append( sb, "lineLength (Default: 80)", 2 ); append( sb, "The maximum length of a display line, should be positive.", 3 ); append( sb, "Expression: ${lineLength}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "instrument".equals( goal ) ) { append( sb, "android:instrument", 0 ); append( sb, "Runs the instrumentation apk on device.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "test", 2 ); append( sb, "The configuration to use for running instrumentation tests. Complete configuration is possible in the plugin configuration:\n\n\u00a0\u00a0true|false|auto\n\u00a0\u00a0packageName\n\u00a0\u00a0className\n\u00a0\u00a0true|false\n\u00a0\u00a0true|false\n\u00a0\u00a0\n\u00a0\u00a0true|false\u00a0\u00a0avd\n\u00a0\u00a0small|medium|large\n\u00a0\u00a0true|false\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourTestClass\n\u00a0\u00a0\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0your.package.name\n\u00a0\u00a0\n\n", 3 ); append( sb, "", 0 ); append( sb, "testAnnotations", 2 ); append( sb, "Whether to execute tests which are annotated with the given annotations.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourAnnotation\n\nor as e.g. -Dandroid.test.annotations=annotation1,annotation2", 3 ); append( sb, "Expression: ${android.test.annotations}", 3 ); append( sb, "", 0 ); append( sb, "testClasses", 2 ); append( sb, "Whether to execute test classes which are specified as part of the instrumentation tests.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourTestClass\n\nor as e.g. -Dandroid.test.classes=class1,class2", 3 ); append( sb, "Expression: ${android.test.classes}", 3 ); append( sb, "", 0 ); append( sb, "testCoverage (Default: false)", 2 ); append( sb, "Enable or disable code coverage for this instrumentation test run.", 3 ); append( sb, "Expression: ${android.test.coverage}", 3 ); append( sb, "", 0 ); append( sb, "testCoverageFile (Default: expression)", 2 ); append( sb, "Location on device into which coverage should be stored (blank for Android default /data/data/your.package.here/files/coverage.ec).", 3 ); append( sb, "", 0 ); append( sb, "testCreateReport (Default: true)", 2 ); append( sb, "Create a junit xml format compatible output file containing the test results for each device the instrumentation tests run on.\n\nThe files are stored in target/surefire-reports and named TEST-deviceid.xml. The deviceid for an emulator is deviceSerialNumber_avdName_manufacturer_model. The serial number is commonly emulator-5554 for the first emulator started with numbers increasing. avdName is as defined in the SDK tool. The manufacturer is typically \'unknown\' and the model is typically \'sdk\'. The deviceid for an actual devices is deviceSerialNumber_manufacturer_model.\n\nThe file contains system properties from the system running the Android Maven Plugin (JVM) and device properties from the device/emulator the tests are running on.\n\nThe file contains a single TestSuite for all tests and a TestCase for each test method. Errors and failures are logged in the file and the system log with full stack traces and other details available.", 3 ); append( sb, "Expression: ${android.test.createreport}", 3 ); append( sb, "", 0 ); append( sb, "testDebug (Default: false)", 2 ); append( sb, "Enable debug causing the test runner to wait until debugger is connected with the Android debug bridge (adb).", 3 ); append( sb, "Expression: ${android.test.debug}", 3 ); append( sb, "", 0 ); append( sb, "testExcludeAnnotations", 2 ); append( sb, "Whether to execute tests which are not annotated with the given annotations.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourAnnotation\n\nor as e.g. -Dandroid.test.excludeAnnotations=annotation1,annotation2", 3 ); append( sb, "Expression: ${android.test.excludeAnnotations}", 3 ); append( sb, "", 0 ); append( sb, "testInstrumentationPackage", 2 ); append( sb, "Package name of the apk we wish to instrument. If not specified, it is inferred from AndroidManifest.xml.", 3 ); append( sb, "Expression: ${android.test.instrumentationPackage}", 3 ); append( sb, "", 0 ); append( sb, "testInstrumentationRunner", 2 ); append( sb, "Class name of test runner. If not specified, it is inferred from AndroidManifest.xml.", 3 ); append( sb, "Expression: ${android.test.instrumentationRunner}", 3 ); append( sb, "", 0 ); append( sb, "testLogOnly (Default: false)", 2 ); append( sb, "Enable this flag to run a log only and not execute the tests.", 3 ); append( sb, "Expression: ${android.test.logonly}", 3 ); append( sb, "", 0 ); append( sb, "testPackages", 2 ); append( sb, "Whether to execute tests only in given packages as part of the instrumentation tests.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name\n\nor as e.g. -Dandroid.test.packages=package1,package2", 3 ); append( sb, "Expression: ${android.test.packages}", 3 ); append( sb, "", 0 ); append( sb, "testSkip (Default: auto)", 2 ); append( sb, "Enables or disables integration test related goals. If true they will be skipped; if false, they will be run. If auto, they will run if any of the classes inherit from any class in junit.framework.** or android.test.**.", 3 ); append( sb, "Expression: ${android.test.skip}", 3 ); append( sb, "", 0 ); append( sb, "testTestSize", 2 ); append( sb, "If specified only execute tests of certain size as defined by the Android instrumentation testing SmallTest, MediumTest and LargeTest annotations. Use \'small\', \'medium\' or \'large\' as values.", 3 ); append( sb, "Expression: ${android.test.testsize}", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "internal-integration-test".equals( goal ) ) { append( sb, "android:internal-integration-test", 0 ); append( sb, "Internal. Do not use.\nCalled automatically when the lifecycle reaches phase integration-test. Figures out whether to call goals in this phase; and if so, calls android:instrument.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "test", 2 ); append( sb, "The configuration to use for running instrumentation tests. Complete configuration is possible in the plugin configuration:\n\n\u00a0\u00a0true|false|auto\n\u00a0\u00a0packageName\n\u00a0\u00a0className\n\u00a0\u00a0true|false\n\u00a0\u00a0true|false\n\u00a0\u00a0\n\u00a0\u00a0true|false\u00a0\u00a0avd\n\u00a0\u00a0small|medium|large\n\u00a0\u00a0true|false\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourTestClass\n\u00a0\u00a0\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0your.package.name\n\u00a0\u00a0\n\n", 3 ); append( sb, "", 0 ); append( sb, "testAnnotations", 2 ); append( sb, "Whether to execute tests which are annotated with the given annotations.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourAnnotation\n\nor as e.g. -Dandroid.test.annotations=annotation1,annotation2", 3 ); append( sb, "Expression: ${android.test.annotations}", 3 ); append( sb, "", 0 ); append( sb, "testClasses", 2 ); append( sb, "Whether to execute test classes which are specified as part of the instrumentation tests.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourTestClass\n\nor as e.g. -Dandroid.test.classes=class1,class2", 3 ); append( sb, "Expression: ${android.test.classes}", 3 ); append( sb, "", 0 ); append( sb, "testCoverage (Default: false)", 2 ); append( sb, "Enable or disable code coverage for this instrumentation test run.", 3 ); append( sb, "Expression: ${android.test.coverage}", 3 ); append( sb, "", 0 ); append( sb, "testCoverageFile (Default: expression)", 2 ); append( sb, "Location on device into which coverage should be stored (blank for Android default /data/data/your.package.here/files/coverage.ec).", 3 ); append( sb, "", 0 ); append( sb, "testCreateReport (Default: true)", 2 ); append( sb, "Create a junit xml format compatible output file containing the test results for each device the instrumentation tests run on.\n\nThe files are stored in target/surefire-reports and named TEST-deviceid.xml. The deviceid for an emulator is deviceSerialNumber_avdName_manufacturer_model. The serial number is commonly emulator-5554 for the first emulator started with numbers increasing. avdName is as defined in the SDK tool. The manufacturer is typically \'unknown\' and the model is typically \'sdk\'. The deviceid for an actual devices is deviceSerialNumber_manufacturer_model.\n\nThe file contains system properties from the system running the Android Maven Plugin (JVM) and device properties from the device/emulator the tests are running on.\n\nThe file contains a single TestSuite for all tests and a TestCase for each test method. Errors and failures are logged in the file and the system log with full stack traces and other details available.", 3 ); append( sb, "Expression: ${android.test.createreport}", 3 ); append( sb, "", 0 ); append( sb, "testDebug (Default: false)", 2 ); append( sb, "Enable debug causing the test runner to wait until debugger is connected with the Android debug bridge (adb).", 3 ); append( sb, "Expression: ${android.test.debug}", 3 ); append( sb, "", 0 ); append( sb, "testExcludeAnnotations", 2 ); append( sb, "Whether to execute tests which are not annotated with the given annotations.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourAnnotation\n\nor as e.g. -Dandroid.test.excludeAnnotations=annotation1,annotation2", 3 ); append( sb, "Expression: ${android.test.excludeAnnotations}", 3 ); append( sb, "", 0 ); append( sb, "testInstrumentationPackage", 2 ); append( sb, "Package name of the apk we wish to instrument. If not specified, it is inferred from AndroidManifest.xml.", 3 ); append( sb, "Expression: ${android.test.instrumentationPackage}", 3 ); append( sb, "", 0 ); append( sb, "testInstrumentationRunner", 2 ); append( sb, "Class name of test runner. If not specified, it is inferred from AndroidManifest.xml.", 3 ); append( sb, "Expression: ${android.test.instrumentationRunner}", 3 ); append( sb, "", 0 ); append( sb, "testLogOnly (Default: false)", 2 ); append( sb, "Enable this flag to run a log only and not execute the tests.", 3 ); append( sb, "Expression: ${android.test.logonly}", 3 ); append( sb, "", 0 ); append( sb, "testPackages", 2 ); append( sb, "Whether to execute tests only in given packages as part of the instrumentation tests.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name\n\nor as e.g. -Dandroid.test.packages=package1,package2", 3 ); append( sb, "Expression: ${android.test.packages}", 3 ); append( sb, "", 0 ); append( sb, "testSkip (Default: auto)", 2 ); append( sb, "Enables or disables integration test related goals. If true they will be skipped; if false, they will be run. If auto, they will run if any of the classes inherit from any class in junit.framework.** or android.test.**.", 3 ); append( sb, "Expression: ${android.test.skip}", 3 ); append( sb, "", 0 ); append( sb, "testTestSize", 2 ); append( sb, "If specified only execute tests of certain size as defined by the Android instrumentation testing SmallTest, MediumTest and LargeTest annotations. Use \'small\', \'medium\' or \'large\' as values.", 3 ); append( sb, "Expression: ${android.test.testsize}", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "internal-pre-integration-test".equals( goal ) ) { append( sb, "android:internal-pre-integration-test", 0 ); append( sb, "Internal. Do not use.\nCalled automatically when the lifecycle reaches phase pre-integration-test. Figures out whether to call goals in this phase; and if so, calls android:deploy-dependencies and android:deploy.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "test", 2 ); append( sb, "The configuration to use for running instrumentation tests. Complete configuration is possible in the plugin configuration:\n\n\u00a0\u00a0true|false|auto\n\u00a0\u00a0packageName\n\u00a0\u00a0className\n\u00a0\u00a0true|false\n\u00a0\u00a0true|false\n\u00a0\u00a0\n\u00a0\u00a0true|false\u00a0\u00a0avd\n\u00a0\u00a0small|medium|large\n\u00a0\u00a0true|false\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourTestClass\n\u00a0\u00a0\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0your.package.name\n\u00a0\u00a0\n\n", 3 ); append( sb, "", 0 ); append( sb, "testAnnotations", 2 ); append( sb, "Whether to execute tests which are annotated with the given annotations.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourAnnotation\n\nor as e.g. -Dandroid.test.annotations=annotation1,annotation2", 3 ); append( sb, "Expression: ${android.test.annotations}", 3 ); append( sb, "", 0 ); append( sb, "testClasses", 2 ); append( sb, "Whether to execute test classes which are specified as part of the instrumentation tests.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourTestClass\n\nor as e.g. -Dandroid.test.classes=class1,class2", 3 ); append( sb, "Expression: ${android.test.classes}", 3 ); append( sb, "", 0 ); append( sb, "testCoverage (Default: false)", 2 ); append( sb, "Enable or disable code coverage for this instrumentation test run.", 3 ); append( sb, "Expression: ${android.test.coverage}", 3 ); append( sb, "", 0 ); append( sb, "testCoverageFile (Default: expression)", 2 ); append( sb, "Location on device into which coverage should be stored (blank for Android default /data/data/your.package.here/files/coverage.ec).", 3 ); append( sb, "", 0 ); append( sb, "testCreateReport (Default: true)", 2 ); append( sb, "Create a junit xml format compatible output file containing the test results for each device the instrumentation tests run on.\n\nThe files are stored in target/surefire-reports and named TEST-deviceid.xml. The deviceid for an emulator is deviceSerialNumber_avdName_manufacturer_model. The serial number is commonly emulator-5554 for the first emulator started with numbers increasing. avdName is as defined in the SDK tool. The manufacturer is typically \'unknown\' and the model is typically \'sdk\'. The deviceid for an actual devices is deviceSerialNumber_manufacturer_model.\n\nThe file contains system properties from the system running the Android Maven Plugin (JVM) and device properties from the device/emulator the tests are running on.\n\nThe file contains a single TestSuite for all tests and a TestCase for each test method. Errors and failures are logged in the file and the system log with full stack traces and other details available.", 3 ); append( sb, "Expression: ${android.test.createreport}", 3 ); append( sb, "", 0 ); append( sb, "testDebug (Default: false)", 2 ); append( sb, "Enable debug causing the test runner to wait until debugger is connected with the Android debug bridge (adb).", 3 ); append( sb, "Expression: ${android.test.debug}", 3 ); append( sb, "", 0 ); append( sb, "testExcludeAnnotations", 2 ); append( sb, "Whether to execute tests which are not annotated with the given annotations.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name.YourAnnotation\n\nor as e.g. -Dandroid.test.excludeAnnotations=annotation1,annotation2", 3 ); append( sb, "Expression: ${android.test.excludeAnnotations}", 3 ); append( sb, "", 0 ); append( sb, "testInstrumentationPackage", 2 ); append( sb, "Package name of the apk we wish to instrument. If not specified, it is inferred from AndroidManifest.xml.", 3 ); append( sb, "Expression: ${android.test.instrumentationPackage}", 3 ); append( sb, "", 0 ); append( sb, "testInstrumentationRunner", 2 ); append( sb, "Class name of test runner. If not specified, it is inferred from AndroidManifest.xml.", 3 ); append( sb, "Expression: ${android.test.instrumentationRunner}", 3 ); append( sb, "", 0 ); append( sb, "testLogOnly (Default: false)", 2 ); append( sb, "Enable this flag to run a log only and not execute the tests.", 3 ); append( sb, "Expression: ${android.test.logonly}", 3 ); append( sb, "", 0 ); append( sb, "testPackages", 2 ); append( sb, "Whether to execute tests only in given packages as part of the instrumentation tests.\n\n\n\u00a0\u00a0\u00a0\u00a0your.package.name\n\nor as e.g. -Dandroid.test.packages=package1,package2", 3 ); append( sb, "Expression: ${android.test.packages}", 3 ); append( sb, "", 0 ); append( sb, "testSkip (Default: auto)", 2 ); append( sb, "Enables or disables integration test related goals. If true they will be skipped; if false, they will be run. If auto, they will run if any of the classes inherit from any class in junit.framework.** or android.test.**.", 3 ); append( sb, "Expression: ${android.test.skip}", 3 ); append( sb, "", 0 ); append( sb, "testTestSize", 2 ); append( sb, "If specified only execute tests of certain size as defined by the Android instrumentation testing SmallTest, MediumTest and LargeTest annotations. Use \'small\', \'medium\' or \'large\' as values.", 3 ); append( sb, "Expression: ${android.test.testsize}", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "lint".equals( goal ) ) { append( sb, "android:lint", 0 ); append( sb, "LintMojo can run the lint command against the project. Implements parsing parameters from pom or command line arguments and sets useful defaults as well. Warning, if you use android.lint.enableClasspath and/or android.lint.enableLibraries the behavior of this goal will vary depending on the phase where this goal is executed. See android.lint.classpath/lintClassPath and android.lint.libraries/lintLibraries for more details.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "lint", 2 ); append( sb, "The configuration for the lint goal. As soon as a lint goal is invoked the command will be executed unless the skip parameter is set. A minimal configuration that will run lint and produce a XML report in ${project.build.directory}/lint/lint-results.xml is\n\n\u00a0\u00a0\u00a0\u00a0false\n\nFull configuration can use these parameters.\n\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0none|a=b\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0${project.build.directory}/lint-results/lint-results-html/\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0${project.build.directory}/lint-results/lint-results-simple-html\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0${project.build.directory}/lint-results/lint-results.xml\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0${project.build.sourceDirecory}}\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0${project.build.outputDirectory}\n\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0\n\nAlternatively to the plugin configuration values can also be configured as properties on the command line as android.lint.* or in pom or settings file as properties like lint*.", 3 ); append( sb, "", 0 ); append( sb, "lintClasspath", 2 ); append( sb, "Add the given folder (or jar file, or path) as a class directory for the project. Only valid when running lint on a single project. Defaults to ${project.build.outputDirectory}. Consequently, the lint output depends on the phase during which this goal is executed, whether project has been compiled or not.", 3 ); append( sb, "Expression: ${android.lint.classpath}", 3 ); append( sb, "", 0 ); append( sb, "lintConfig", 2 ); append( sb, "Use the given configuration file to determine whether issues are enabled or disabled. Defaults is \'null\' so no config file will be used. To use the commonly used lint.xml in the project root set the parameter to \'${project.basedir}/lint.xml\'.", 3 ); append( sb, "Expression: ${android.lint.config}", 3 ); append( sb, "", 0 ); append( sb, "lintDisableSourceLines", 2 ); append( sb, "Do not include the source file lines with errors in the output. By default, the error output includes snippets of source code on the line containing the error, but this flag turns it off. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.lint.disableSourceLines}", 3 ); append( sb, "", 0 ); append( sb, "lintEnableClasspath", 2 ); append( sb, "Enable including classpath into lint analysis. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.lint.enableSources}", 3 ); append( sb, "", 0 ); append( sb, "lintEnableHtml", 2 ); append( sb, "Enable the creation of a HTML report. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.lint.enableHtml}", 3 ); append( sb, "", 0 ); append( sb, "lintEnableLibraries", 2 ); append( sb, "Enable including libraries into lint analysis. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.lint.enableSources}", 3 ); append( sb, "", 0 ); append( sb, "lintEnableSimpleHtml", 2 ); append( sb, "Enable the creation of a simple HTML report. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.lint.enableSimpleHtml}", 3 ); append( sb, "", 0 ); append( sb, "lintEnableSource", 2 ); append( sb, "Enable including sources into lint analysis. Defaults to \'true\'.", 3 ); append( sb, "Expression: ${android.lint.enableSources}", 3 ); append( sb, "", 0 ); append( sb, "lintEnableXml", 2 ); append( sb, "Enable the creation of a XML report. Defaults to \'true\'.", 3 ); append( sb, "Expression: ${android.lint.enableXml}", 3 ); append( sb, "", 0 ); append( sb, "lintFailOnError", 2 ); append( sb, "Fail build on lint errors. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.lint.failOnError}", 3 ); append( sb, "", 0 ); append( sb, "lintFullPath", 2 ); append( sb, "Use full paths in the error output. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.lint.fullPath}", 3 ); append( sb, "", 0 ); append( sb, "lintHtmlOutputPath", 2 ); append( sb, "Path for the HTML report. If the filename is a directory (or a new filename without an extension), lint will create a separate report for each scanned project. Defaults to ${project.build.directory}/lint/lint-html/.", 3 ); append( sb, "Expression: ${android.lint.htmlOutputPath}", 3 ); append( sb, "", 0 ); append( sb, "lintIgnoreWarnings", 2 ); append( sb, "Only check for errors and ignore warnings. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.lint.ignoreWarning}", 3 ); append( sb, "", 0 ); append( sb, "lintLibraries", 2 ); append( sb, "Add the given folder (or jar file, or path) as a class library for the project. Only valid when running lint on a single project. Defaults to all non provided resolved artifacts. Consequently, the lint output depends on the phase during which this goal is executed, whether project\'s dependencies have been resolved or not.", 3 ); append( sb, "Expression: ${android.lint.libraries}", 3 ); append( sb, "", 0 ); append( sb, "lintShowAll", 2 ); append( sb, "Do not truncate long messages, lists of alternate locations, etc. Defaults to \'true\'.", 3 ); append( sb, "Expression: ${android.lint.showAll}", 3 ); append( sb, "", 0 ); append( sb, "lintSimpleHtmlOutputPath", 2 ); append( sb, "Create a simple HTML report. If the filename is a directory (or a new filename without an extension), lint will create a separate report for each scanned project. Defaults to ${project.build.directory}/lint/lint-simple-html/.", 3 ); append( sb, "Expression: ${android.lint.simpleHtmlOutputPath}", 3 ); append( sb, "", 0 ); append( sb, "lintSkip", 2 ); append( sb, "Skip the lint goal execution. Defaults to \'true\'.", 3 ); append( sb, "Expression: ${android.lint.skip}", 3 ); append( sb, "", 0 ); append( sb, "lintSources", 2 ); append( sb, "Add the given folder (or path) as a source directory for the project. Only valid when running lint on a single project. Defaults to ${project.build.sourceDirectory}.", 3 ); append( sb, "Expression: ${android.lint.sources}", 3 ); append( sb, "", 0 ); append( sb, "lintUrl", 2 ); append( sb, "Add links to HTML report, replacing local path prefixes with url prefix. The mapping can be a comma-separated list of path prefixes to corresponding URL prefixes, such as C:\\temp\\Proj1=http://buildserver/sources/temp/Proj1. To turn off linking to files, use --url none. Defaults to \'none\'.", 3 ); append( sb, "Expression: ${android.lint.url}", 3 ); append( sb, "", 0 ); append( sb, "lintWarnAll", 2 ); append( sb, "Check all warnings, including those off by default. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.lint.warnAll}", 3 ); append( sb, "", 0 ); append( sb, "lintWarningsAsErrors", 2 ); append( sb, "Report all warnings as errors. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.lint.warningsAsErrors}", 3 ); append( sb, "", 0 ); append( sb, "lintXmlOutputPath", 2 ); append( sb, "Create an XML report. If the filename is a directory (or a new filename without an extension), lint will create a separate report for each scanned project. Defaults to ${project.build.directory}/lint/lint-results.xml.", 3 ); append( sb, "Expression: ${android.lint.xmlOutputPath}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "manifest-update".equals( goal ) ) { append( sb, "android:manifest-update", 0 ); append( sb, "Updates various version attributes present in the AndroidManifest.xml file.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "manifest", 2 ); append( sb, "Configuration for the manifest-update goal.\nYou can configure this mojo to update the following basic manifest attributes:\n\nandroid:versionName on the manifest element. android:versionCode on the manifest element. android:sharedUserId on the manifest element. android:debuggable on the application element.\n\nMoreover, you may specify custom values for the supports-screens and compatible-screens elements. This is useful if you\'re using custom build profiles to build APKs tailored to specific screen configurations. Values passed via POM configuration for these elements will be merged with whatever is found in the Manifest file. Values defined in the POM will take precedence.\nNote: This process will reformat the AndroidManifest.xml per JAXP Transformer defaults if updates are made to the manifest. You can configure attributes in the plugin configuration like so\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0com.jayway.maven.plugins.android.generation2\n\u00a0\u00a0\u00a0\u00a0android-maven-plugin\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0update-manifest\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0manifest-update\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0123\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0anId\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0true|false\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0false\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0small\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ldpi\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\nor use properties set in the pom or settings file or supplied as command line parameter. Add \'android.\' in front of the property name for command line usage. All parameters follow a manifest.* naming convention.", 3 ); append( sb, "", 0 ); append( sb, "manifestApplicationIcon", 2 ); append( sb, "Update the android:icon attribute with the specified parameter. Exposed via the project property android.manifest.appIcon.", 3 ); append( sb, "Expression: ${android.manifest.applicationIcon}", 3 ); append( sb, "", 0 ); append( sb, "manifestApplicationLabel", 2 ); append( sb, "Update the android:label attribute with the specified parameter. Exposed via the project property android.manifest.appLabel.", 3 ); append( sb, "Expression: ${android.manifest.applicationLabel}", 3 ); append( sb, "", 0 ); append( sb, "manifestApplicationTheme", 2 ); append( sb, "Update the android:theme attribute with the specified parameter. Exposed via the project property android.manifest.applicationTheme.", 3 ); append( sb, "Expression: ${android.manifest.applicationTheme}", 3 ); append( sb, "", 0 ); append( sb, "manifestDebuggable", 2 ); append( sb, "Update the android:debuggable attribute with the specified parameter. Exposed via the project property android.manifest.debuggable.", 3 ); append( sb, "Expression: ${android.manifest.debuggable}", 3 ); append( sb, "", 0 ); append( sb, "manifestProviderAuthorities", 2 ); append( sb, "For a given provider (named by android:name update the android:authorities attribute for the provider. Exposed via the project property android.manifest.providerAuthorities.", 3 ); append( sb, "Expression: ${android.manifest.providerAuthorities}", 3 ); append( sb, "", 0 ); append( sb, "manifestSharedUserId", 2 ); append( sb, "Update the android:sharedUserId attribute with the specified parameter. If specified, exposes the project property android.manifest.sharedUserId.", 3 ); append( sb, "Expression: ${android.manifest.sharedUserId}", 3 ); append( sb, "", 0 ); append( sb, "manifestVersionCode", 2 ); append( sb, "Update the android:versionCode attribute with the specified parameter. Exposed via the project property android.manifest.versionCode.", 3 ); append( sb, "Expression: ${android.manifest.versionCode}", 3 ); append( sb, "", 0 ); append( sb, "manifestVersionCodeAutoIncrement (Default: false)", 2 ); append( sb, "Auto increment the android:versionCode attribute with each build. The value is exposed via the project property android.manifest.versionCodeAutoIncrement and the resulting value as android.manifest.versionCode.", 3 ); append( sb, "Expression: ${android.manifest.versionCodeAutoIncrement}", 3 ); append( sb, "", 0 ); append( sb, "manifestVersionCodeUpdateFromVersion (Default: false)", 2 ); append( sb, "Update the android:versionCode attribute automatically from the project version e.g 3.2.1 will become version code 3002001. As described in this blog post http://www.simpligility.com/2010/11/release-version-management-for-your-android-application/ but done without using resource filtering. The value is exposed via the project property property android.manifest.versionCodeUpdateFromVersion and the resulting value as android.manifest.versionCode. For the purpose of generating the versionCode, if a version element is missing it is presumed to be 0. The maximum values for the version increment and version minor values are 999, the version major should be no larger than 2000. Any other suffixes do not participate in the version code generation.", 3 ); append( sb, "Expression: ${android.manifest.versionCodeUpdateFromVersion}", 3 ); append( sb, "", 0 ); append( sb, "manifestVersionName (Default: ${project.version})", 2 ); append( sb, "Update the android:versionName with the specified parameter. If left empty it will use the version number of the project. Exposed via the project property android.manifest.versionName.", 3 ); append( sb, "Expression: ${android.manifest.versionName}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "monkey".equals( goal ) ) { append( sb, "android:monkey", 0 ); append( sb, "Can execute tests using UI/Application Exerciser Monkey.\nImplements parsing parameters from pom or command line arguments and sets useful defaults as well. This goal will invoke Android Monkey exerciser. If the application crashes during the exercise, this goal can fail the build.\nA typical usage of this goal can be found at Quality tools for Android project.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "monkey", 2 ); append( sb, "The configuration for the ui automator goal. As soon as a lint goal is invoked the command will be executed unless the skip parameter is set. A minimal configuration that will run lint and produce a XML report in ${project.build.directory}/lint/lint-results.xml is\n\n\u00a0\u00a0false\n\nFull configuration can use these parameters.\n\u00a0\n\u00a0\u00a0\u00a0false\n\u00a0\u00a0\u00a05000\n\u00a0\u00a0\u00a0123456\n\u00a0\u00a0\u00a010\n\u00a0\u00a0\u00a010\n\u00a0\u00a0\u00a010\n\u00a0\u00a0\u00a010\n\u00a0\u00a0\u00a010\n\u00a0\u00a0\u00a010\n\u00a0\u00a0\u00a010\n\u00a0\u00a0\u00a010\n\u00a0\u00a0\u00a010\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0com.foo\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0com.bar\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0foo\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0bar\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0true\n\u00a0\nAlternatively to the plugin configuration values can also be configured as properties on the command line as android.lint.* or in pom or settings file as properties like lint*.", 3 ); append( sb, "", 0 ); append( sb, "monkeyCategories", 2 ); append( sb, "If you specify one or more categories this way, the Monkey will only allow the system to visit activities that are listed with one of the specified categories. If you don\'t specify any categories, the Monkey will select activities listed with the category Intent.CATEGORY_LAUNCHER or Intent.CATEGORY_MONKEY. Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.categories}", 3 ); append( sb, "", 0 ); append( sb, "monkeyCreateReport", 2 ); append( sb, "Create a junit xml format compatible output file containing the test results for each device the instrumentation tests run on.\n\nThe files are stored in target/surefire-reports and named TEST-deviceid.xml. The deviceid for an emulator is deviceSerialNumber_avdName_manufacturer_model. The serial number is commonly emulator-5554 for the first emulator started with numbers increasing. avdName is as defined in the SDK tool. The manufacturer is typically \'unknown\' and the model is typically \'sdk\'.\nThe deviceid for an actual devices is deviceSerialNumber_manufacturer_model.\n\nThe file contains system properties from the system running the Android Maven Plugin (JVM) and device properties from the device/emulator the tests are running on.\n\nThe file contains a single TestSuite for all tests and a TestCase for each test method. Errors and failures are logged in the file and the system log with full stack traces and other details available. Defaults to false.", 3 ); append( sb, "Expression: ${android.monkey.createReport}", 3 ); append( sb, "", 0 ); append( sb, "monkeyDebugNoEvents", 2 ); append( sb, "When specified, the Monkey will perform the initial launch into a test activity, but will not generate any further events. For best results, combine with -v, one or more package constraints, and a non-zero throttle to keep the Monkey running for 30 seconds or more. This provides an environment in which you can monitor package transitions invoked by your application. Defaults to false.", 3 ); append( sb, "Expression: ${android.monkey.debugNoEvents}", 3 ); append( sb, "", 0 ); append( sb, "monkeyEventCount", 2 ); append( sb, "Number of generated events. Defaults to 1000.", 3 ); append( sb, "Expression: ${android.monkey.eventCount}", 3 ); append( sb, "", 0 ); append( sb, "monkeyHprof", 2 ); append( sb, "If set, this option will generate profiling reports immediately before and after the Monkey event sequence. This will generate large (~5Mb) files in data/misc, so use with care. See Traceview for more information on trace files. Defaults to false.", 3 ); append( sb, "Expression: ${android.monkey.Hprof}", 3 ); append( sb, "", 0 ); append( sb, "monkeyIgnoreCrashes", 2 ); append( sb, "Normally, the Monkey will stop when the application crashes or experiences any type of unhandled exception. If you specify this option, the Monkey will continue to send events to the system, until the count is completed. Settings this option is different to setting testFailureIgnore or maven.test.failure.ignore to true, it will impact monkey run but not the result of the maven build. Defaults to false.", 3 ); append( sb, "Expression: ${android.monkey.ignoreCrashes}", 3 ); append( sb, "", 0 ); append( sb, "monkeyIgnoreSecurityExceptions", 2 ); append( sb, "Normally, the Monkey will stop when the application experiences any type of permissions error, for example if it attempts to launch an activity that requires certain permissions. If you specify this option, the Monkey will continue to send events to the system, until the count is completed. * Defaults to false.", 3 ); append( sb, "Expression: ${android.monkey.IgnoreSecurityExceptions}", 3 ); append( sb, "", 0 ); append( sb, "monkeyIgnoreTimeouts", 2 ); append( sb, "Normally, the Monkey will stop when the application experiences any type of timeout error such as a \'Application Not Responding\' dialog. If you specify this option, the Monkey will continue to send events to the system, until the count is completed. Defaults to false.", 3 ); append( sb, "Expression: ${android.monkey.IgnoreTimeouts}", 3 ); append( sb, "", 0 ); append( sb, "monkeyKillProcessAfterError", 2 ); append( sb, "Normally, when the Monkey stops due to an error, the application that failed will be left running. When this option is set, it will signal the system to stop the process in which the error occurred. Note, under a normal (successful) completion, the launched process(es) are not stopped, and the device is simply left in the last state after the final event. Defaults to false.", 3 ); append( sb, "Expression: ${android.monkey.KillProcessAfterError}", 3 ); append( sb, "", 0 ); append( sb, "monkeyMonitorNativeCrashes", 2 ); append( sb, "Watches for and reports crashes occurring in the Android system native code. If --kill-process-after-error is set, the system will stop. Defaults to false.", 3 ); append( sb, "Expression: ${android.monkey.MonitorNativeCrashes}", 3 ); append( sb, "", 0 ); append( sb, "monkeyPackages", 2 ); append( sb, "If you specify one or more packages this way, the Monkey will only allow the system to visit activities within those packages. If your application requires access to activities in other packages (e.g. to select a contact) you\'ll need to specify those packages as well. If you don\'t specify any packages, the Monkey will allow the system to launch activities in all packages. Defaults to Null.", 3 ); append( sb, "Expression: ${android.monkey.packages}", 3 ); append( sb, "", 0 ); append( sb, "monkeyPercentAnyEvent", 2 ); append( sb, "Adjust percentage of other types of events. This is a catch-all for all other types of events such as keypresses, other less-used buttons on the device, and so forth. Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.percentAnyevent}", 3 ); append( sb, "", 0 ); append( sb, "monkeyPercentAppswitch", 2 ); append( sb, "Adjust percentage of activity launches. At random intervals, the Monkey will issue a startActivity() call, as a way of maximizing coverage of all activities within your package. Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.percentAppswitch}", 3 ); append( sb, "", 0 ); append( sb, "monkeyPercentMajorNav", 2 ); append( sb, "Adjust percentage of \'major\' navigation events. (These are navigation events that will typically cause actions within your UI, such as the center button in a 5-way pad, the back key, or the menu key.) Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.percentMajorNav}", 3 ); append( sb, "", 0 ); append( sb, "monkeyPercentMotion", 2 ); append( sb, "Adjust percentage of motion events. (Motion events consist of a down event somewhere on the screen, a series of pseudo-random movements, and an up event.) Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.percentMotion}", 3 ); append( sb, "", 0 ); append( sb, "monkeyPercentNav", 2 ); append( sb, "Adjust percentage of \'basic\' navigation events. (Navigation events consist of up/down/left/right, as input from a directional input device.) Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.percentNav}", 3 ); append( sb, "", 0 ); append( sb, "monkeyPercentSyskeys", 2 ); append( sb, "Adjust percentage of \'system\' key events. (These are keys that are generally reserved for use by the system, such as Home, Back, Start Call, End Call, or Volume controls.) Defaults to null. Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.percentSyskeys}", 3 ); append( sb, "", 0 ); append( sb, "monkeyPercentTouch", 2 ); append( sb, "Adjust percentage of touch events. (Touch events are a down-up event in a single place on the screen.) Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.percentTouch}", 3 ); append( sb, "", 0 ); append( sb, "monkeyPercentTrackball", 2 ); append( sb, "Adjust percentage of trackball events. (Trackball events consist of one or more random movements, sometimes followed by a click.) Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.percentTrackball}", 3 ); append( sb, "", 0 ); append( sb, "monkeySeed", 2 ); append( sb, "Seed value for pseudo-random number generator. If you re-run the Monkey with the same seed value, it will generate the same sequence of events. Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.seed}", 3 ); append( sb, "", 0 ); append( sb, "monkeySkip", 2 ); append( sb, "Enables or disables monkey test goal. If true it will be skipped; if false, it will be run. Defaults to true.", 3 ); append( sb, "Expression: ${android.monkey.skip}", 3 ); append( sb, "", 0 ); append( sb, "monkeyThrottle", 2 ); append( sb, "Inserts a fixed delay between events. You can use this option to slow down the Monkey. If not specified, there is no delay and the events are generated as rapidly as possible. Defaults to null.", 3 ); append( sb, "Expression: ${android.monkey.throttle}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "monkeyrunner".equals( goal ) ) { append( sb, "android:monkeyrunner", 0 ); append( sb, "Can execute monkey runner programs.\nImplements parsing parameters from pom or command line arguments and sets useful defaults as well. This goal will invoke monkey runner scripts. If the application crashes during the exercise, this goal can fail the build.\nA typical usage of this goal can be found at Quality tools for Android project.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "monkeyCreateReport", 2 ); append( sb, "Create a junit xml format compatible output file containing the test results for each device the instrumentation tests run on.\n\nThe files are stored in target/surefire-reports and named TEST-deviceid.xml. The deviceid for an emulator is deviceSerialNumber_avdName_manufacturer_model. The serial number is commonly emulator-5554 for the first emulator started with numbers increasing. avdName is as defined in the SDK tool. The manufacturer is typically \'unknown\' and the model is typically \'sdk\'.\nThe deviceid for an actual devices is deviceSerialNumber_manufacturer_model.\n\nThe file contains system properties from the system running the Android Maven Plugin (JVM) and device properties from the device/emulator the tests are running on.\n\nThe file contains a single TestSuite for all tests and a TestCase for each test method. Errors and failures are logged in the file and the system log with full stack traces and other details available. Defaults to false.", 3 ); append( sb, "Expression: ${android.monkeyrunner.createReport}", 3 ); append( sb, "", 0 ); append( sb, "monkeyInjectDeviceSerialNumberIntoScript", 2 ); append( sb, "Decides whether or not to inject device serial number as a parameter to each monkey runner script. The parameter will be the first parameter passed to the script. This parameter allows to support monkey runner tests on multiple devices. In that case, monkey runner scripts have to be modified to take the new parameter into account. Follow that thread on stack over flow to learn more about it. Defaults to false.", 3 ); append( sb, "Expression: ${android.monkeyrunner.injectDeviceSerialNumberIntoScript}", 3 ); append( sb, "", 0 ); append( sb, "monkeyPlugins", 2 ); append( sb, "(Optional) Specifies a .jar file containing a plugin for monkeyrunner. To learn more about monkeyrunner plugins, see Extending monkeyrunner with plugins. You can add as many plugins as you want. Defaults to no plugins.", 3 ); append( sb, "Expression: ${android.monkeyrunner.plugins}", 3 ); append( sb, "", 0 ); append( sb, "monkeyrunner", 2 ); append( sb, "The configuration for the monkey runner goal.\n\n\u00a0\u00a0false\n\nFull configuration can use these parameters.\n\u00a0\n\u00a0\u00a0\u00a0false\n\u00a0\u00a0\u00a0true\n\u00a0\nAlternatively to the plugin configuration values can also be configured as properties on the command line as android.lint.* or in pom or settings file as properties like lint*.", 3 ); append( sb, "", 0 ); append( sb, "monkeyRunnerSkip", 2 ); append( sb, "Enables or disables monkey runner test goal. If true it will be skipped; if false, it will be run. Defaults to true.", 3 ); append( sb, "Expression: ${android.monkeyrunner.skip}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "parsedPrograms", 2 ); append( sb, "Runs the contents of the file as a Python program.\n\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0foo.py\n\u00a0\u00a0\u00a0\u00a0bar\n\u00a0\u00a0\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0foo2.py\n\u00a0\u00a0\n\u00a0\u00a0[..]\n\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "ndk-build".equals( goal ) ) { append( sb, "android:ndk-build", 0 ); append( sb, "(no description available)", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "applicationMakefile", 2 ); append( sb, "Specifies the application makefile to use for the build (if other than the default Application.mk).", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachHeaderFiles (Default: true)", 2 ); append( sb, "Flag indicating whether the header files used in the build should be included and attached to the build as an additional artifact.", 3 ); append( sb, "Expression: ${android.ndk.build.attach-header-files}", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachNativeArtifacts (Default: false)", 2 ); append( sb, "Flag indicating whether the resulting native library should be attached as an artifact to the build. This means the resulting .so is installed into the repository as well as being included in the final APK.", 3 ); append( sb, "Expression: ${android.ndk.build.attach-native-artifact}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "buildWarningsRegularExpression (Default: .*[warning|note]: .*)", 2 ); append( sb, "Defines the regular expression used to detect whether error/warning output from ndk-build is a minor compile warning or is actually an error which should cause the build to fail. If the pattern matches, the output from the compiler will not be considered an error and compile will be successful.", 3 ); append( sb, "Expression: ${android.ndk.build.build-warnings-regular-expression}", 3 ); append( sb, "", 0 ); append( sb, "clearNativeArtifacts (Default: false)", 2 ); append( sb, "Flag indicating whether the NDK output directory (libs/) should be cleared after build. This will essentially \'move\' all the native artifacts (.so) to the ${project.build.directory}/libs/. If an APK is built as part of the invocation, the libraries will be included from here.", 3 ); append( sb, "Expression: ${android.ndk.build.clear-native-artifacts}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "headerFilesDirectives", 2 ); append( sb, "Specifies the set of header files includes/excludes which should be used for bundling the exported header files. The below shows an example of how this can be used.\n\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0${basedir}/jni/include\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0**\\/*.h\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\n\n\nIf no headerFilesDirectives is specified, the default includes will be defined as shown below:\n\n\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0${basedir}/jni\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0**\\/*.h\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0**\\/*.c\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\n\u00a0\u00a0[..]\n\n", 3 ); append( sb, "", 0 ); append( sb, "ignoreBuildWarnings (Default: true)", 2 ); append( sb, "Flag indicating whether warnings should be ignored while compiling. If true, the build will not fail if warning are found during compile.", 3 ); append( sb, "Expression: ${android.ndk.build.ignore-build-warnings}", 3 ); append( sb, "", 0 ); append( sb, "makefile", 2 ); append( sb, "Specifies the makefile to use for the build (if other than the default Android.mk).", 3 ); append( sb, "", 0 ); append( sb, "maxJobs (Default: false)", 2 ); append( sb, "Flag indicating whether to use the max available jobs for the host machine", 3 ); append( sb, "Expression: ${android.ndk.build.maxJobs}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesOutputDirectory (Default: ${project.basedir}/obj/local)", 2 ); append( sb, "Folder containing native, static libraries compiled and linked by the NDK.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesOutputDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "ndkArchitecture", 2 ); append( sb, "Deprecated. Use NdkBuildMojo.ndkArchitectures instead", 3 ); append( sb, "", 0 ); append( sb, "Defines the architecture for the NDK build", 3 ); append( sb, "Expression: ${android.ndk.build.architecture}", 3 ); append( sb, "", 0 ); append( sb, "ndkArchitectures", 2 ); append( sb, "Defines the architectures for the NDK build - this is a space separated list (i.e x86 armeabi)", 3 ); append( sb, "Expression: ${android.ndk.build.architectures}", 3 ); append( sb, "", 0 ); append( sb, "ndkArchitectureToolchainMappings", 2 ); append( sb, "Defines the architecture to toolchain mappings for the NDK build x86-4.7 arm-linux-androideabi-4.7 ", 3 ); append( sb, "", 0 ); append( sb, "ndkBuildAdditionalCommandline", 2 ); append( sb, "Specifies additional command line parameters to pass to ndk-build", 3 ); append( sb, "Expression: ${android.ndk.build.command-line}", 3 ); append( sb, "", 0 ); append( sb, "ndkBuildDirectory", 2 ); append( sb, "(no description available)", 3 ); append( sb, "Expression: ${android.ndk.ndk-build-directory}", 3 ); append( sb, "", 0 ); append( sb, "ndkBuildExecutable", 2 ); append( sb, "Allows for overriding the default ndk-build executable.", 3 ); append( sb, "Expression: ${android.ndk.ndk-build-executable}", 3 ); append( sb, "", 0 ); append( sb, "ndkClassifier", 2 ); append( sb, "Specifies the classifier with which the artifact should be stored in the repository", 3 ); append( sb, "Expression: ${android.ndk.build.native-classifier}", 3 ); append( sb, "", 0 ); append( sb, "ndkFinalLibraryName", 2 ); append( sb, "Specifies the final name of the library output by the build (this allows the pom to override the default artifact name). The value should not include the \'lib\' prefix or filename extension (e.g. \'.so\').", 3 ); append( sb, "Expression: ${android.ndk.build.build.final-library.name}", 3 ); append( sb, "", 0 ); append( sb, "ndkOutputDirectory (Default: ${project.build.directory}/ndk-libs)", 2 ); append( sb, "Build folder to place built native libraries into", 3 ); append( sb, "Expression: ${android.ndk.build.ndk-output-directory}", 3 ); append( sb, "", 0 ); append( sb, "ndkToolchain", 2 ); append( sb, "(no description available)", 3 ); append( sb, "Expression: ${android.ndk.build.ndk-toolchain}", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "skipStripping (Default: false)", 2 ); append( sb, "(no description available)", 3 ); append( sb, "Expression: ${android.ndk.build.skip-native-library-stripping}", 3 ); append( sb, "", 0 ); append( sb, "systemProperties", 2 ); append( sb, "Defines additional system properties which should be exported to the ndk-build script. This\n\n\n\u00a0\u00a0propertyValue\n\u00a0\u00a0android\n\u00a0\u00a0[..]\n\n*", 3 ); append( sb, "", 0 ); append( sb, "target", 2 ); append( sb, "Target to invoke on the native makefile.\n", 3 ); append( sb, "Expression: ${android.nativeTarget}", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); append( sb, "useHeaderArchives (Default: true)", 2 ); append( sb, "Flag indicating whether the header files for native, static library dependencies should be used. If true, the header archive for each statically linked dependency will be resolved.", 3 ); append( sb, "Expression: ${android.ndk.build.use-header-archives}", 3 ); append( sb, "", 0 ); append( sb, "useLocalSrcIncludePaths (Default: false)", 2 ); append( sb, "Flag indicating whether the make files last LOCAL_SRC_INCLUDES should be used for determing what header files to include. Setting this flag to true, overrides any defined header files directives. Note: By setting this flag to true, all header files used in the project will be added to the resulting header archive. This may be undesirable in most cases and is therefore turned off by default.", 3 ); append( sb, "Expression: ${android.ndk.build.use-local-src-include-paths}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "proguard".equals( goal ) ) { append( sb, "android:proguard", 0 ); append( sb, "Processes both application and dependency classes using the ProGuard byte code obfuscator, minimzer, and optimizer. For more information, see https://proguard.sourceforge.net.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "includeJdkLibs", 2 ); append( sb, "If set to true JDK jars will be included as library jars and corresponding filters will be applied to android.jar. Defaults to true.", 3 ); append( sb, "Expression: ${android.proguard.includeJdkLibs}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "outputDirectory (Default: proguard)", 2 ); append( sb, "Path relative to the project\'s build directory (target) where proguard puts folowing files:\n-\tdump.txt\n-\tseeds.txt\n-\tusage.txt\n-\tmapping.txt\nYou can define the directory like this:\n\n\u00a0\u00a0false\n\u00a0\u00a0proguard.cfg\n\u00a0\u00a0my_proguard\n\u00a0\nOutput directory is defined relatively so it could be also outside of the target directory.", 3 ); append( sb, "Expression: ${android.proguard.outputDirectory}", 3 ); append( sb, "", 0 ); append( sb, "proguard", 2 ); append( sb, "ProGuard configuration. ProGuard is disabled by default. Set the skip parameter to false to activate proguard. A complete configuartion can include any of the following:\n\n\n\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0proguard.cfg\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0${env.ANDROID_HOME}/tools/proguard/proguard-android.txt\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0someAbsolutePathToProguardJar\n\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0true|false\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0-Xms256m\n\u00a0\u00a0\u00a0\u00a0-Xmx512m\n\u00a0\u00a0\n\n\nA good practice is to create a release profile in your POM, in which you enable ProGuard. ProGuard should be disabled for development builds, since it obfuscates class and field names, and it may interfere with test projects that rely on your application classes. All parameters can be overridden in profiles or the the proguard* properties. Default values apply and are documented with these properties.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardConfig", 2 ); append( sb, "Path to the ProGuard configuration file (relative to project root). Defaults to \'proguard.cfg\'", 3 ); append( sb, "Expression: ${android.proguard.config}", 3 ); append( sb, "", 0 ); append( sb, "proguardConfigs", 2 ); append( sb, "Additional ProGuard configuration files (relative to project root).", 3 ); append( sb, "Expression: ${android.proguard.configs}", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "proguardFilterManifest", 2 ); append( sb, "If set to true will add a filter to remove META-INF/MANIFEST.MF files. Defaults to false.", 3 ); append( sb, "Expression: ${android.proguard.filterManifest}", 3 ); append( sb, "", 0 ); append( sb, "proguardFilterMavenDescriptor", 2 ); append( sb, "If set to true will add a filter to remove META-INF/maven/* files. Defaults to false.", 3 ); append( sb, "Expression: ${android.proguard.filterMavenDescriptor}", 3 ); append( sb, "", 0 ); append( sb, "proguardJvmArguments", 2 ); append( sb, "Extra JVM Arguments. Using these you can e.g. increase memory for the jvm running the build. Defaults to \'-Xmx512M\'.", 3 ); append( sb, "Expression: ${android.proguard.jvmArguments}", 3 ); append( sb, "", 0 ); append( sb, "proguardProguardJarPath", 2 ); append( sb, "Path to the proguard jar and therefore version of proguard to be used. By default this will load the jar from the Android SDK install. Overriding it with an absolute path allows you to use a newer or custom proguard version.. You can also reference an external Proguard version as a plugin dependency like this:\n\n\u00a0\u00a0com.jayway.maven.plugins.android.generation2\n\u00a0\u00a0android-maven-plugin\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0net.sf.proguard\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0proguard-base\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a04.7\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\nwhich will download and use Proguard 4.7 as deployed to the Central Repository.", 3 ); append( sb, "Expression: ${android.proguard.proguardJarPath}", 3 ); append( sb, "", 0 ); append( sb, "proguardSkip", 2 ); append( sb, "Whether ProGuard is enabled or not. Defaults to true.", 3 ); append( sb, "Expression: ${android.proguard.skip}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "pull".equals( goal ) ) { append( sb, "android:pull", 0 ); append( sb, "Copy file or directory from all the attached (or specified) devices/emulators.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "pull", 2 ); append( sb, "The configuration for the pull goal can be set up in the plugin configuration in the pom file as:\n\n\n\u00a0\u00a0\u00a0\u00a0path\n\u00a0\u00a0\u00a0\u00a0path\n\n\nThe parameters can also be configured as property in the pom or settings file\n\n\n\u00a0\u00a0\u00a0\u00a0pathondevice\n\u00a0\u00a0\u00a0\u00a0path\n\nor from command-line with parameter -Dandroid.pull.source=path and -Dandroid.pull.destination=path.\n\n", 3 ); append( sb, "", 0 ); append( sb, "pullDestination", 2 ); append( sb, "The path of the destination to copy the file to. If destination ends with File.separator, it is supposed to be a directory. Therefore the source - whether it refers to a file or directory - will be copied into the destination directory. If destination does not end with File.separator, the last path segment will be assumed as the new file or directory name (depending on the type of source). Any missing directories will be created.", 3 ); append( sb, "Expression: ${android.pull.destination}", 3 ); append( sb, "", 0 ); append( sb, "pullSource", 2 ); append( sb, "The path of the source file or directory on the emulator/device.", 3 ); append( sb, "Expression: ${android.pull.source}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "push".equals( goal ) ) { append( sb, "android:push", 0 ); append( sb, "Copy file to all the attached (or specified) devices/emulators.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "push", 2 ); append( sb, "The configuration for the push goal can be set up in the plugin configuration in the pom file as:\n\n\n\u00a0\u00a0\u00a0\u00a0path\n\u00a0\u00a0\u00a0\u00a0path\n\n\nThe parameters can also be configured as property in the pom or settings file\n\n\n\u00a0\u00a0\u00a0\u00a0pathondevice\n\u00a0\u00a0\u00a0\u00a0path\n\nor from command-line with parameter -Dandroid.push.source=path and -Dandroid.push.destination=path.\n\n", 3 ); append( sb, "", 0 ); append( sb, "pushDestination", 2 ); append( sb, "The destination file name as absolute path on the emulator or device. If the last character is a \'/\' it will be assumed that the original base filename should be preserved and a target directory is specified. This works analogous if the source is a directory.", 3 ); append( sb, "Expression: ${android.push.destination}", 3 ); append( sb, "", 0 ); append( sb, "pushSource", 2 ); append( sb, "The file name of the local filesystem file to push to the emulator or device either as absolute path or relative to the execution folder. If you specify a directory, all containing files will be pushed recursively.", 3 ); append( sb, "Expression: ${android.push.source}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "redeploy".equals( goal ) ) { append( sb, "android:redeploy", 0 ); append( sb, "Redeploys the built apk file, or another specified apk, to a connected device. This simply tries to undeploy the APK and re-deploy it.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "file", 2 ); append( sb, "Optionally used to specify a different apk file to deploy to a connected emulator or usb device, instead of the built apk from this project.", 3 ); append( sb, "Expression: ${android.file}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "run".equals( goal ) ) { append( sb, "android:run", 0 ); append( sb, "Runs the first Activity shown in the top-level launcher as determined by its Intent filters.\nAndroid provides a component-based architecture, which means that there is no \'main\' function which serves as an entry point to the APK. There\'s an homogeneous collection of Activity(es), Service(s), Receiver(s), etc.\n\nThe Android top-level launcher (whose purpose is to allow users to launch other applications) uses the Intent resolution mechanism to determine which Activity(es) to show to the end user. Such activities are identified by at least:\n\n-\tAction type: android.intent.action.MAIN\n-\tCategory: android.intent.category.LAUNCHER\n\n\n\nAnd are declared in AndroidManifest.xml as such:\n\n\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\n\n\nThis Mojo will try to to launch the first activity of this kind found in AndroidManifest.xml. In case multiple activities satisfy the requirements listed above only the first declared one is run. In case there are no \'Launcher activities\' declared in the manifest or no activities declared at all, this goal aborts throwing an error.\n\nThe device parameter is taken into consideration so potentially the Activity found is started on all attached devices. The application will NOT be deployed and running will silently fail if the application is not deployed.\n", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "run", 2 ); append( sb, "The configuration for the run goal can be set up in the plugin configuration in the pom file as:\n\n\n\u00a0\u00a0\u00a0\u00a0true\n\n\nThe parameter is optional and defaults to false.\n\nThe debug parameter can also be configured as property in the pom or settings file\n\n\n\u00a0\u00a0\u00a0\u00a0true\n\nor from command-line with parameter -Dandroid.run.debug=true.\n\n", 3 ); append( sb, "", 0 ); append( sb, "runDebug", 2 ); append( sb, "Debug parameter for the the run goal. If true, the device or emulator will pause execution of the process at startup to wait for a debugger to connect. Also see the \'run\' parameter documentation. Default value is false.", 3 ); append( sb, "Expression: ${android.run.debug}", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "uiautomator".equals( goal ) ) { append( sb, "android:uiautomator", 0 ); append( sb, "Can execute tests using ui uiautomator.\nImplements parsing parameters from pom or command line arguments and sets useful defaults as well. This goal is meant to execute a special java project dedicated to UI testing via UIAutomator. It will build the jar of the project, dex it and send it to dalvik cache of a rooted device or to an emulator. If you use a rooted device, refer to this thread on stack over flow.\n\nThe tests are executed via ui automator. A surefire compatible test report can be generated and its location will be logged during build.\n\nTo use this goal, you will need to place the uiautomator.jar file (part of the Android SDK >= 16) on a nexus repository.\n\nA typical usage of this goal can be found at Quality tools for Android project.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "uiautomator", 2 ); append( sb, "The configuration for the ui automator goal. As soon as a lint goal is invoked the command will be executed unless the skip parameter is set. A minimal configuration that will run lint and produce a XML report in ${project.build.directory}/lint/lint-results.xml is\n\n\u00a0\u00a0false\n\nFull configuration can use these parameters.\n\n\u00a0\u00a0false\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0com.foo.SampleTest\n\u00a0\u00a0\u00a0\u00a0com.bar.CalculatorTest#testCalculatorApp\n\u00a0\u00a0\n\u00a0\u00a0true\n\u00a0\u00a0true\n\u00a0\u00a0/sdcard/uiautomator-screenshots/\n\u00a0\u00a0UIA\n\nAlternatively to the plugin configuration values can also be configured as properties on the command line as android.lint.* or in pom or settings file as properties like lint*.", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorCreateReport", 2 ); append( sb, "Create a junit xml format compatible output file containing the test results for each device the instrumentation tests run on.\n\nThe files are stored in target/surefire-reports and named TEST-deviceid.xml. The deviceid for an emulator is deviceSerialNumber_avdName_manufacturer_model. The serial number is commonly emulator-5554 for the first emulator started with numbers increasing. avdName is as defined in the SDK tool. The manufacturer is typically \'unknown\' and the model is typically \'sdk\'.\nThe deviceid for an actual devices is deviceSerialNumber_manufacturer_model.\n\nThe file contains system properties from the system running the Android Maven Plugin (JVM) and device properties from the device/emulator the tests are running on.\n\nThe file contains a single TestSuite for all tests and a TestCase for each test method. Errors and failures are logged in the file and the system log with full stack traces and other details available. Defaults to false.", 3 ); append( sb, "Expression: ${android.uiautomator.createReport}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorDebug", 2 ); append( sb, "Decides whether to wait for debugger to connect before starting.", 3 ); append( sb, "Expression: ${android.uiautomator.debug}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorDumpFilePath", 2 ); append( sb, "Generate an XML file with a dump of the current UI hierarchy. If a filepath is not specified, by default, the generated dump file is stored on the device in this location /storage/sdcard0/window_dump.xml.", 3 ); append( sb, "Expression: ${android.uiautomator.dumpFilePath}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorJarFile", 2 ); append( sb, "Jar file that will be run during ui uiautomator tests.", 3 ); append( sb, "Expression: ${android.uiautomator.jarFile}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorNoHup", 2 ); append( sb, "Decides whether to run the test to completion on the device even if its parent process is terminated (for example, if the device is disconnected).", 3 ); append( sb, "Expression: ${android.uiautomator.noHup}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorPropertiesKeyPrefix", 2 ); append( sb, "Specifies a prefix for custom user properties that will be sent through to UIAutomator with the \'-e key value\' parameter.\n\nIf any user property is needed in a test case, this is the way to send it through. User credentials for example.\n\nIf no prefix value is specified no user property will be sent.\n\nUsage example:\n\nUIA\n\nAnd run it with:\n\n> mvn \'-DUIAkey=value\'\n\nwould become \'-e key value\' as it would be runned from adb\n", 3 ); append( sb, "Expression: ${android.uiautomator.propertiesKeyPrefix}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorReportSuffix", 2 ); append( sb, "Adds a suffix to the report name. For example if parameter reportSuffix is \'-mySpecialReport\', the name of the report will be TEST-deviceid-mySpecialReport.xml Defaults to null. Hence, in the default case, the name of the report will be TEST-deviceid.xml.", 3 ); append( sb, "Expression: ${android.uiautomator.reportSuffix}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorScreenshotsPathOnDevice", 2 ); append( sb, "Location of the screenshots on device. This value is only taken into account if takeScreenshotOnFailure = true. If a filepath is not specified, by default, the screenshots will be located at /sdcard/uiautomator-screenshots/.", 3 ); append( sb, "Expression: ${android.uiautomator.screenshotsPathOnDevice}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorSkip", 2 ); append( sb, "Enables or disables uiautomator test goal. If true it will be skipped; if false, it will be run.", 3 ); append( sb, "Expression: ${android.uiautomator.skip}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorTakeScreenshotOnFailure", 2 ); append( sb, "Decides whether or not to take screenshots when tests execution results in failure or error. Screenshots use the utiliy screencap that is usually available within emulator/devices with SDK >= 16.", 3 ); append( sb, "Expression: ${android.uiautomator.takeScreenshotOnFailure}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorTestClassOrMethods", 2 ); append( sb, "Test class or methods to execute during uiautomator tests. Each class or method must be fully qualified with the package name, in one of these formats:\n-\tpackage_name.class_name\n-\tpackage_name.class_name#method_name\n", 3 ); append( sb, "Expression: ${android.uiautomator.testClassOrMethod}", 3 ); append( sb, "", 0 ); append( sb, "uiautomatorUseDump", 2 ); append( sb, "Decides whether to use a dump file or not.", 3 ); append( sb, "Expression: ${android.uiautomator.useDump}", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "undeploy".equals( goal ) ) { append( sb, "android:undeploy", 0 ); append( sb, "Undeploys the built apk file, or another specified apk, from a connected device.\n", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "file", 2 ); append( sb, "Optionally used to specify a different apk file to undeploy from a connected emulator or usb device, instead of the built apk from this project.", 3 ); append( sb, "Expression: ${android.file}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "package (Default: null)", 2 ); append( sb, "Optionally used to specify a different apk package to undeploy from a connected emulator or usb device, instead of the built apk from this project.", 3 ); append( sb, "Expression: ${android.package}", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "unpack".equals( goal ) ) { append( sb, "android:unpack", 0 ); append( sb, "Unpack libraries code and dependencies into target. This can be useful for using the proguard maven plugin to provide the input jars. Although it is encouraged to use the proguard mojo of the android maven plugin.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "lazyLibraryUnpack (Default: false)", 2 ); append( sb, "If true, the library will be unpacked only when outputDirectory doesn\'t exist, i.e, a clean build for most cases.", 3 ); append( sb, "Expression: ${android.lazyLibraryUnpack}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); } } if ( goal == null || goal.length() <= 0 || "zipalign".equals( goal ) ) { append( sb, "android:zipalign", 0 ); append( sb, "ZipalignMojo can run the zipalign command against the apk. Implements parsing parameters from pom or command line arguments and sets useful defaults as well.", 1 ); append( sb, "", 0 ); if ( detail ) { append( sb, "Available parameters:", 1 ); append( sb, "", 0 ); append( sb, "aaptExtraArgs", 2 ); append( sb, "A list of extra arguments that must be passed to aapt.", 3 ); append( sb, "Expression: ${android.aaptExtraArgs}", 3 ); append( sb, "", 0 ); append( sb, "androidManifestFile (Default: ${project.basedir}/AndroidManifest.xml)", 2 ); append( sb, "The AndroidManifest.xml file.", 3 ); append( sb, "", 0 ); append( sb, "assetsDirectory (Default: ${project.basedir}/assets)", 2 ); append( sb, "The android assets directory.", 3 ); append( sb, "", 0 ); append( sb, "attachJar (Default: true)", 2 ); append( sb, "Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.\n\nOnly disable it if you know you won\'t need it for any integration-tests. Otherwise, leave it enabled.\n", 3 ); append( sb, "Expression: ${android.attachJar}", 3 ); append( sb, "", 0 ); append( sb, "attachSources (Default: false)", 2 ); append( sb, "Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.\n\nEnabling this setting is only required if this project\'s source code and/or res(ources) will be included in other projects, using the Maven tag.\n", 3 ); append( sb, "Expression: ${android.attachSources}", 3 ); append( sb, "", 0 ); append( sb, "configurations", 2 ); append( sb, "A selection of configurations to be included in the APK as a comma separated list. This will limit the configurations for a certain type. For example, specifying hdpi will exclude all resource folders with the mdpi or ldpi modifiers, but won\'t affect language or orientation modifiers. For more information about this option, look in the aapt command line help.", 3 ); append( sb, "Expression: ${android.configurations}", 3 ); append( sb, "", 0 ); append( sb, "customPackage", 2 ); append( sb, "Generates R.java into a different package.", 3 ); append( sb, "Expression: ${android.customPackage}", 3 ); append( sb, "", 0 ); append( sb, "device", 2 ); append( sb, "Specifies which the serial number of the device to connect to. Using the special values \'usb\' or \'emulator\' is also valid. \'usb\' will connect to all actual devices connected (via usb). \'emulator\' will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.", 3 ); append( sb, "Expression: ${android.device}", 3 ); append( sb, "", 0 ); append( sb, "generateApk (Default: true)", 2 ); append( sb, "Decides whether the Apk should be generated or not. If set to false, dx and apkBuilder will not run. This is probably most useful for a project used to generate apk sources to be inherited into another application project.", 3 ); append( sb, "Expression: ${android.generateApk}", 3 ); append( sb, "", 0 ); append( sb, "nativeLibrariesDirectory (Default: ${project.basedir}/libs)", 2 ); append( sb, "Root folder containing native libraries to include in the application package.\n", 3 ); append( sb, "Expression: ${android.nativeLibrariesDirectory}", 3 ); append( sb, "", 0 ); append( sb, "ndk", 2 ); append( sb, "The Android NDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-ndk-r4\n\n\nThe parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_NDK_HOME}\n\n\nor just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.\n", 3 ); append( sb, "", 0 ); append( sb, "proguardFile", 2 ); append( sb, "Automatically create a ProGuard configuration file that will guard Activity classes and the like that are defined in the AndroidManifest.xml. This files is then automatically used in the proguard mojo execution, if enabled.", 3 ); append( sb, "Expression: ${android.proguardFile}", 3 ); append( sb, "", 0 ); append( sb, "release (Default: false)", 2 ); append( sb, "Whether to create a release build (default is false / debug build). This affect BuildConfig generation and apk generation at this stage, but should probably affect other aspects of the build.", 3 ); append( sb, "Expression: ${android.release}", 3 ); append( sb, "", 0 ); append( sb, "renameManifestPackage", 2 ); append( sb, "A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.\n", 3 ); append( sb, "Expression: ${android.renameManifestPackage}", 3 ); append( sb, "", 0 ); append( sb, "resourceDirectory (Default: ${project.basedir}/res)", 2 ); append( sb, "The android resources directory.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectories", 2 ); append( sb, "The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.", 3 ); append( sb, "", 0 ); append( sb, "resourceOverlayDirectory (Default: ${project.basedir}/res-overlay)", 2 ); append( sb, "The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.", 3 ); append( sb, "", 0 ); append( sb, "sdk", 2 ); append( sb, "The Android SDK to use.\n\nLooks like this:\n\n\n\u00a0\u00a0\u00a0\u00a0/opt/android-sdk-linux\n\u00a0\u00a0\u00a0\u00a02.1\n\n\nThe parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 16. If a platform/api level is not installed on the machine an error message will be produced.\n\nThe parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:\n\n\n\u00a0\u00a0\u00a0\u00a0${env.ANDROID_SDK}\n\n\nor just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.\n", 3 ); append( sb, "", 0 ); append( sb, "undeployBeforeDeploy (Default: false)", 2 ); append( sb, "Whether to undeploy an apk from the device before deploying it.\n\nOnly has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.\n\nIt is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail becuase your keystore is different.\n", 3 ); append( sb, "Expression: ${android.undeployBeforeDeploy}", 3 ); append( sb, "", 0 ); append( sb, "zipalign", 2 ); append( sb, "The configuration for the zipalign goal. As soon as a zipalign goal is invoked the command will be executed unless the skip parameter is set. By default the input file is the apk produced by the build in target. The outputApk will use the postfix -aligned.apk. The following shows a default full configuration of the zipalign goal as an example for changes as plugin configuration.\n\n\u00a0\u00a0\u00a0\u00a0false\n\u00a0\u00a0\u00a0\u00a0true\n\u00a0\u00a0\u00a0\u00a0${project.build.directory}/${project.finalName}.apk\n\u00a0\u00a0\u00a0\u00a0${project.build.directory}/${project.finalName}-aligned.apk\n\nValues can also be configured as properties on the command line as android.zipalign.* or in pom or settings file as properties like zipalign.*.", 3 ); append( sb, "", 0 ); append( sb, "zipalignInputApk", 2 ); append( sb, "The apk file to be zipaligned. Per default the file is taken from build directory (target normally) using the build final name as file name and apk as extension.", 3 ); append( sb, "Expression: ${android.zipalign.inputApk}", 3 ); append( sb, "", 0 ); append( sb, "zipalignOutputApk", 2 ); append( sb, "The apk file produced by the zipalign goal. Per default the file is placed into the build directory (target normally) using the build final name appended with \'-aligned\' as file name and apk as extension.", 3 ); append( sb, "Expression: ${android.zipalign.outputApk}", 3 ); append( sb, "", 0 ); append( sb, "zipalignSkip", 2 ); append( sb, "Skip the zipalign goal execution. Defaults to \'true\'.", 3 ); append( sb, "Expression: ${android.zipalign.skip}", 3 ); append( sb, "", 0 ); append( sb, "zipalignVerbose", 2 ); append( sb, "Activate verbose output for the zipalign goal execution. Defaults to \'false\'.", 3 ); append( sb, "Expression: ${android.zipalign.verbose}", 3 ); append( sb, "", 0 ); } } if ( getLog().isInfoEnabled() ) { getLog().info( sb.toString() ); } } /** *

Repeat a String n times to form a new string.

* * @param str String to repeat * @param repeat number of times to repeat str * @return String with repeated String * @throws NegativeArraySizeException if repeat < 0 * @throws NullPointerException if str is null */ private static String repeat( String str, int repeat ) { StringBuffer buffer = new StringBuffer( repeat * str.length() ); for ( int i = 0; i < repeat; i++ ) { buffer.append( str ); } return buffer.toString(); } /** * Append a description to the buffer by respecting the indentSize and lineLength parameters. * Note: The last character is always a new line. * * @param sb The buffer to append the description, not null. * @param description The description, not null. * @param indent The base indentation level of each line, must not be negative. */ private void append( StringBuffer sb, String description, int indent ) { for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); ) { sb.append( it.next().toString() ).append( '\n' ); } } /** * Splits the specified text into lines of convenient display length. * * @param text The text to split into lines, must not be null. * @param indent The base indentation level of each line, must not be negative. * @param indentSize The size of each indentation, must not be negative. * @param lineLength The length of the line, must not be negative. * @return The sequence of display lines, never null. * @throws NegativeArraySizeException if indent < 0 */ private static List toLines( String text, int indent, int indentSize, int lineLength ) { List lines = new ArrayList(); String ind = repeat( "\t", indent ); String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" ); for ( int i = 0; i < plainLines.length; i++ ) { toLines( lines, ind + plainLines[i], indentSize, lineLength ); } return lines; } /** * Adds the specified line to the output sequence, performing line wrapping if necessary. * * @param lines The sequence of display lines, must not be null. * @param line The line to add, must not be null. * @param indentSize The size of each indentation, must not be negative. * @param lineLength The length of the line, must not be negative. */ private static void toLines( List lines, String line, int indentSize, int lineLength ) { int lineIndent = getIndentLevel( line ); StringBuffer buf = new StringBuffer( 256 ); String[] tokens = line.split( " +" ); for ( int i = 0; i < tokens.length; i++ ) { String token = tokens[i]; if ( i > 0 ) { if ( buf.length() + token.length() >= lineLength ) { lines.add( buf.toString() ); buf.setLength( 0 ); buf.append( repeat( " ", lineIndent * indentSize ) ); } else { buf.append( ' ' ); } } for ( int j = 0; j < token.length(); j++ ) { char c = token.charAt( j ); if ( c == '\t' ) { buf.append( repeat( " ", indentSize - buf.length() % indentSize ) ); } else if ( c == '\u00A0' ) { buf.append( ' ' ); } else { buf.append( c ); } } } lines.add( buf.toString() ); } /** * Gets the indentation level of the specified line. * * @param line The line whose indentation level should be retrieved, must not be null. * @return The indentation level of the line. */ private static int getIndentLevel( String line ) { int level = 0; for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ ) { level++; } for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ ) { if ( line.charAt( i ) == '\t' ) { level++; break; } } return level; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy