Specifying dependencies

You can use any Java compatible libraries with the Java runtime on the App Engine flexible environment. These instructions use Apache Maven to build, run, and deploy a sample app using Java runtime version 8 and version 11/17. Note that you must update your app.yaml to use the new version. See Java runtime for more information about using the new runtimes. For details about installing Maven, see Using Apache Maven and the App Engine Plugin.

Declaring and managing dependencies

To manage dependencies using Maven, you need to specify the dependencies in the <dependencies> section inside the pom.xml file of your project.

To manage your project's dependency on Maven itself, you can use the Maven Wrapper. If you do not use the Maven Wrapper, App Engine defaults to using a recent version of Maven when running gcloud app deploy.

Specifying the Java servlet library

Eclipse Jetty and Tomcat apps require the Java servlet library. Specify it in your pom.xml file's <dependencies> entry:

version 11/17

<dependency>
  <groupId>com.example.appengine</groupId>
  <artifactId>simple-jetty-main</artifactId>
  <version>1</version>
  <scope>provided</scope>
</dependency>

version 8

<dependencies>

  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <type>jar</type>
    <scope>provided</scope>
  </dependency>

</dependencies>
Note that frameworks such as SparkJava or Spring Boot will not require the servlet library.

Using the Cloud Client Libraries

Cloud Client Libraries for Java provide idiomatic access to Google Cloud services. To use a library, declare it as a dependency.

Typically, you only declare dependencies on the specific libraries that your app needs. For example, to use the Cloud Storage library:

<!--  Using libraries-bom to manage versions.
See https://github.com/GoogleCloudPlatform/cloud-opensource-java/wiki/The-Google-Cloud-Platform-Libraries-BOM -->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>libraries-bom</artifactId>
      <version>26.28.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-storage</artifactId>
  </dependency>
</dependencies>

You can configure the Cloud Client Libraries for Java to handle authentication automatically.