Notice: Over the next few months, we're reorganizing the App Engine documentation site to make it easier to find content and better align with the rest of Google Cloud products. The same content will be available, but the navigation will now match the rest of the Cloud products. If you have feedback or questions as you navigate the site, click Send Feedback.

Using Apache Maven and the App Engine Plugin

Stay organized with collections Save and categorize content based on your preferences.

Apache Maven is a build automation tool for Java.

App Engine provides a Maven plugin that you can use to build and deploy your app to App Engine. The plugin does not support Enterprise Application Archive (EAR) projects.

Before you start

  1. Determine if Maven is installed and which version you have by running the following command:

    mvn -v
    

    If Maven is installed, a long string of information beginning with Apache Maven and followed by a version number such as 3.5 will display.

  2. If you don't have Maven 3.5 or newer installed:

    1. Download Maven 3.5 or newer.
    2. Install Maven 3.5 or newer.
  3. If you haven't already done so, follow the steps here to download the gcloud CLI, create your Cloud project, and initialize your App Engine app.

  4. Install the gcloud CLI app-engine-java component:

    gcloud components install app-engine-java
    

Adding the App Engine Maven plugin

To use the App Engine Maven plugin, add the following lines to the plugins section in your project's pom.xml file:

<plugin>
   <groupId>com.google.cloud.tools</groupId>
   <artifactId>appengine-maven-plugin</artifactId>
   <version>2.4.4</version>
</plugin>

Building and deploying your app

After you add the App Engine Maven plugin to your project's pom.xml file, you can use the following command to build deploy your app:

mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID

Replace PROJECT_ID with the ID of your Cloud project. If your pom.xml file already specifies your project ID , you don't need to include the -Dapp.deploy.projectId property in the command you run.

The package goal builds and packages your app, and the appengine:deploy goal does the following:

  1. Generates a unique version ID for the new version of your app.

  2. Deploys the new version to App Engine.

  3. Routes all traffic to the new version.

Changing the deployment defaults

You can change the default deployment behavior by passing parameters in the appengine:deploy command. For example, the following command deploys the service defined in your pom.xml file to a specific Google Cloud project, assigns a custom version ID to the service, and turns off automatic traffic routing for the new version:

mvn appengine:deploy -Dapp.deploy.projectId=PROJECT_ID -Dapp.deploy.version=VERSION_ID -Dapp.deploy.promote=False

You can also use the appengine:deploy command to deploy configuration files, such as cron.yaml, dispatch.yaml, and index.yaml.

For more information, see the appengine:deploy reference .

What's next