Defining runtime settings

An App Engine app is configured using an app.yaml file, that contains the runtime, handlers, scaling, and other general settings including environment variables.

About app.yaml files

You can specify the runtime configuration for your Java app, including versions and URLs, in the app.yaml file. This file acts as a deployment descriptor of a specific service version.

If you don't create an app.yaml file, the gcloud app deploy command can create one when you deploy your application. The app.yaml file that App Engine creates contains only the settings that are required to run your application.

Generally, your app.yaml file requires only the runtime element for a simple Java app in the standard environment, for example:

runtime: java21

App Engine provides default values for all other settings, including the F1 instance class, which determines the memory and CPU resources that are available to your app, and automatic scaling, which controls how and when new instances of your app are created.

If you need to override the default settings, create an app.yaml file and specify the settings you need. For more information, see app.yaml file reference.

You can specify a unique name for your app.yaml files, but then you must specify the file name with the deployment command as well. For example, if you name your app.yaml file service-name-app.yaml or app.standard.yaml, then you must deploy your app using either:

gcloud app deploy service-name-app.yaml
gcloud app deploy app.standard.yaml
To learn more about structuring multiple services and app.yaml files in your app, see Structuring web services.

For a Maven project, the standard location for app.yaml file is under the src/main/appengine directory. The App Engine Maven plugin will create a correct target/appengine-staging directory containing your JAR artifacts and this app.yaml file, ready for deployment.

The following is a sample Maven project structure:


If you have more than one JAR file in your project directory or want to specify a custom entrypoint, you must specify it in the entrypoint element of your app.yaml file.

All configuration elements

For a complete list of all the supported elements in this configuration file, see the app.yaml reference.