After you add the gcloud CLI-based App Engine Maven plugin to your project , the following App Engine-specific Maven goals are available:
| Goal | Description | 
|---|---|
| appengine:cloudSdkLogin | Sets the global gcloud CLI state for account. | 
| appengine:deploy | Stages and deploys an application to App Engine. | 
| appengine:deployAll | Stages and deploys an application with all of its valid yaml configurations simultaneously to App Engine. | 
| appengine:deployCron | Stages and deploys a cron.yamlconfiguration
    file to App Engine. | 
| appengine:deployDispatch | Stages and deploys a dispatch.yamlconfiguration
    file to App Engine. | 
| appengine:deployDos | Stages and deploys a dos.yamlconfiguration
    file to App Engine. | 
| appengine:deployIndex | Stages and deploys an index.yamlconfiguration
    file to App Engine. | 
| appengine:deployQueue | Stages and deploys a queue.yamlconfiguration
    file to App Engine. | 
| appengine:help | Displays help information on the App Engine Maven plugin. | 
| appengine:run | Runs the App Engine development server. When the server is
      running, it continuously checks to determine whether appengine-web.xmlhas changed. If it has, the server reloads
      the application. You do not need to stop and restart your application
      because of changes toappengine-web.xml. This goal is supported for the legacy bundled services. | 
| appengine:stage | Generates an application directory for deployment. | 
| appengine:start | Starts running the App Engine devserver asynchronously and then
      returns to the command line. When this goal runs, the behavior is the same
      as the rungoal except that Maven continues processing goals
      and exits after the server is up and running. This goal is supported for the legacy bundled services. | 
| appengine:stop | Stops a running App Engine web development server. This goal is supported for the legacy bundled services. | 
For more information on how to set up and use Maven, see Using Maven.
Using parameters
Each goal has associated parameters that you can specify in the pom.xml file.
For example:
<plugins>
   <plugin>
     <groupId>com.google.cloud.tools</groupId>
     <artifactId>appengine-maven-plugin</artifactId>
     <version>2.8.1</version>
     <configuration>
       <deploy.stopPreviousVersion>true</deploy.stopPreviousVersion>
       <cloudSdkHome>/usr/foo/path/to/cloudsdk</cloudSdkHome>
     </configuration>
  </plugin>
</plugins>You can also define configuration parameters in the command line, following the
pattern -D[USER_PROPERTY]=[PARAMETER_VALUE].
For example, to specify a directory to which to stage your application:
mvn appengine:stage -Dapp.stage.stagingDirectory=[YOUR_STAGING_DIRECTORY]
See the following sections for a list of the parameters that are available for each goal.
appengine:deploy
Stages and deploys an application to App Engine.
You can use the following parameters, some of which correspond to
gcloud app deploy command line flags or gcloud app services command line flags:
| Parameter | Description | User Property | 
|---|---|---|
| appEngineDirectory | The directory that contains app.yamland other supported
          App Engine configuration files. Default is${basedir}/src/main/appengine. | app.stage.appEngineDirectory | 
| artifact | The location of the JAR or WAR archive to deploy. Default is ${project.build.directory}/${project.build.finalName}.${project.packaging}. | app.stage.artifact | 
| bucket | The Cloud Storage bucket used to stage files associated with the deployment. If this argument is not specified, the application's default bucket is used. | app.deploy.bucket | 
| cloudSdkPath | Optional parameter to configure the location of the Google Cloud CLI. Default is to automatically discover from the PATH or standard install location. | cloudSdkPath | 
| deployables | The YAML files for the services or configurations you want to deploy.
          Default is the app.yamlfile in the staging directory.
          If that is not found, attempts to automatically generate necessary
          configuration files (such asapp.yaml) in the staging
          directory. | app.deploy.deployables | 
| dockerDirectory | The directory containing the Dockerfile and other Docker resources.
        Default is ${basedir}/src/main/docker/. | app.stage.dockerDirectory | 
| imageUrl | Deploy with a specific Docker image. ImageUrlmust be
        a valid Artifact Registry name, for example,docker.pkg.dev/foo,
      wherefoois the name of the image. | app.deploy.imageUrl | 
| projectId | The Google Cloud project name to use for this invocation.
          Default is the current project selected when
          initializing gcloud. | app.deploy.projectId | 
| promote | Promote the deployed version to receive all traffic. Default is True. | app.deploy.promote | 
| server | The App Engine server to connect to. Typically, you do not need to change this value. | app.deploy.server | 
| stagingDirectory | Required. The directory to which to stage the application. Default is ${project.build.directory}/appengine-staging. | app.stage.stagingDirectory | 
| stopPreviousVersion | Stop the previously running version when deploying a new version that receives all traffic. | app.deploy.stopPreviousVersion | 
| version | The version of the app that will be created or replaced by this deployment. If you do not specify a version, one will be generated for you. | app.deploy.version | 
appengine:help
Displays help information on the App Engine Maven plugin. To display parameter details, call:
mvn appengine:help -Ddetail=true -Dgoal=[GOAL_NAME]
You can use the following parameters:
| Parameter | Description | User Property | 
|---|---|---|
| detail | If true, display all settable properties for each goal. Default is False. | detail | 
| goal | The name of the goal for which to show help. If unspecified, all goals will be displayed. | goal | 
| indentSize | The number of spaces per indentation level. Should be a positive number.
        Default is 2. | indentSize | 
| lineLength | The maximum length of a display line. Should be a positive number.
        Default is 80. | lineLength | 
appengine:run
Runs the App Engine development web server. When the server is
running, it continuously checks to determine whether appengine-web.xml has
changed. If it has, the server reloads the application. This means that you do
not need to stop and restart your application because of changes to
appengine-web.xml.
You can use the following parameters, some of which correspond to the local development server command line flags:
| Property | Description | Plugin configuration | Command line configuration | 
|---|---|---|---|
| automaticRestart | Restart instances automatically when web application files (resources
      or class files) are changed. To configure Maven to put the compiled class
      files in the correct directory of the web app application, you must change
      the Maven outputDirectory setting: <build> <outputDirectory> target/${project.artifactId}-${project.version}/WEB-INF/classes </outputDirectory> ... <plugins> ... | devserver.automaticRestart | app.devserver.automaticRestart | 
| environment | A map of environment variables to send to the local development server.
      Example: <environment> <key1>value1</key1> <key2>value2</key2> </environment> | devserver.environment | app.devserver.environment | 
| jvmFlags | Additional arguments to pass to the java command when launching an
      instance of the app. May be specified more than once. Example: <jvmFlags> <jvmFlag>-Xmx1024m</jvmFlag> <jvmFlag>-Xms256m</jvmFlag> </jvmFlags> | devserver.jvmFlags | app.devserver.jvmFlags | 
| host | Host name to which application services should bind. Default is localhost. | devserver.host | app.devserver.host | 
| port | Lowest port to which application services should bind. Default is 8080. | devserver.port | app.devserver.port | 
| serverVersion | Server version to launch, options are "1" and "2-alpha". Default is "1". | devserver.serverVersion | app.devserver.serverVersion | 
| services | Required. Path(s) to a directory containing a directory containing WEB-INF/web.xml. Default isbuild/exploded-app. | devserver.services | app.devserver.services | 
appengine:stage
Generates an application build directory for deployment.
You can use the following parameters:
| Parameter | Description | User Property | 
|---|---|---|
| appEngineDirectory | The directory that contains app.yamland other supported
      App Engine configuration files. Default is${basedir}/src/main/appengine. | app.stage.appEngineDirectory | 
| artifact | The location of the JAR or WAR archive to deploy. Default is ${project.build.directory}/${project.build.finalName}.${project.packaging}. | app.stage.artifact | 
| cloudSdkPath | Optional parameter to configure the location of the gcloud CLI. | cloudSdkPath | 
| dockerDirectory | The directory containing the Dockerfile and other Docker resources.
      Default is ${basedir}/src/main/docker/${basedir}/src/main/docker/. | app.stage.dockerDirectory | 
| stagingDirectory | Required. The directory to which to stage the application. Default is ${project.build.directory}/appengine-staging | app.stage.stagingDirectory | 
appengine:start
Starts running the App Engine development web server asynchronously
and then returns to the command line. When this goal runs, the behavior is the
same as the run goal except that Maven continues processing goals and exits
after the server is up and running.
You can use the following parameters:
| Property | Description | Plugin configuration | Command line configuration | 
|---|---|---|---|
| environment | A map of environment variables to send to the local development server.
      Example: <environment> <key1>value1</key1> <key2>value2</key2> </environment> | devserver.environment | app.devserver.environment | 
| jvmFlags | Additional arguments to pass to the java command when launching an
      instance of the app. May be specified more than once. Example: <jvmFlags> <jvmFlag>-Xmx1024m</jvmFlag> <jvmFlag>-Xms256m</jvmFlag> </jvmFlags> | devserver.jvmFlags | app.devserver.jvmFlags | 
| host | Host name to which application services should bind. Default is localhost. | devserver.host | app.devserver.host | 
| port | Lowest port to which application services should bind. Default is 8080. | devserver.port | app.devserver.port | 
| serverVersion | Server version to launch, options are "1" and "2-alpha". Default is "1". | devserver.serverVersion | app.devserver.serverVersion | 
| services | Required. Path(s) to a directory containing a directory containing WEB-INF/web.xml. Default isbuild/exploded-app. | devserver.services | app.devserver.services | 
| startSuccessTimeout | Amount of time in seconds to wait for the Dev App Server to start in the background (when using appengineStart). | devserver.startSuccessTimeout | app.devserver.startSuccessTimeout | 
appengine:stop
Stops a running App Engine web development server.
You can use the following parameters:
| Parameter | Description | Plugin configuration | Command line configuration | 
|---|---|---|---|
| host | Host name to which the admin server should bind. Default is localhost | devserver.adminHost | app.devserver.adminHost | 
| port | Port to which the admin server should bind. Default is 8000. | devserver.adminPort | app.devserver.adminPort | 
| cloudSdkHome | Optional parameter to configure the location of the gcloud CLI. If this property is not specified, then the plugin automatically downloads the gcloud CLI. | cloudSdkHome | cloudSdkHome |