The standalone App Engine SDK is deprecated as of July 30, 2019, and it is unavailable for download as of August 30, 2020. The following table lists the deprecated features and recommended alternatives:
Deprecated | Recommended action |
---|---|
standalone App Engine SDK | Download Cloud SDK. |
appcfg commands |
Migrate from AppCfg to gcloud command line. |
dev_appserver.sh commands |
For local development, run the java_dev_appserver.sh command from the bin directory of Cloud SDK. |
Java App Engine SDK-based plugin for Maven (com.google.appengine.appengine-maven ) |
Migrate to the Cloud SDK-based Maven plugin. |
Java App Engine SDK-based plugin for Gradle (com.google.appengine.appengine-gradle ) |
Migrate to the Cloud SDK-based Gradle plugin. |
cron.xml , datastore-index.xml , dispatch.xml , and queue.xml file formats |
Migrate automatically using the gcloud beta app migrate-config tool or migrate your xml to yaml files manually. |
Migration timetable
July 30, 2019: The standalone App Engine SDK-based tooling is deprecated.
August 30, 2020: The standalone App Engine SDK is not available for download and might not work, if used.
August 30, 2020: Google shut down and removed support for the standalone App Engine SDK.
Backward non-compatible features
As a result of the deprecation of the appcfg
tool and the standalone
App Engine SDK, the following features are currently not supported in
Cloud SDK:
Migrating XML to YAML file formats
Cloud SDK does not support the following file formats:
cron.xml
datastore-index.xml
dispatch.xml
queue.xml
The following examples demonstrate how to migrate your xml
files to
yaml
files.
Migrating your files automatically
To migrate your xml
files automatically:
You must have Cloud SDK version 226.0.0 or later. To update to the latest version:
gcloud components update
For each file you'd like to migrate, specify one of the following subcommands (
cron-xml-to-yaml
,datastore-indexes-xml-to-yaml
,dispatch-xml-to-yaml
,queue-xml-to-yaml
) and file name:gcloud beta app migrate-config queue-xml-to-yaml MY-QUEUE-XML-FILE.xml
Manually double-check the converted file before deploying to production.
For a successful sample
xml
toyaml
file conversion, see the Migrating your files manually tabs.
Migrating your files manually
To manually migrate your xml
files to yaml
files:
cron.yaml
Create a cron.yaml
file with a cron
object containing a list of objects,
each with fields that correspond to each of the <cron>
tag attributes in
your cron.xml
file, as shown below.
Converted cron.yaml
file:
cron:
- url: '/recache'
schedule: 'every 2 minutes'
description: 'Repopulate the cache every 2 minutes'
- url: '/weeklyreport'
schedule: 'every monday 08:30'
target: 'version-2'
timezone: 'America/New_York'
description: 'Mail out a weekly report'
Original cron.xml
file:
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/recache</url>
<description>Repopulate the cache every 2 minutes</description>
<schedule>every 2 minutes</schedule>
</cron>
<cron>
<url>/weeklyreport</url>
<description>Mail out a weekly report</description>
<schedule>every monday 08:30</schedule>
<timezone>America/New_York</timezone>
<target>version-2</target>
</cron>
</cronentries>
For more information, see the cron.yaml
reference
documentation.
dispatch.yaml
Create a dispatch.yaml
file with a dispatch
object containing a list of
objects, each with fields that correspond to each of the <dispatch>
tag
attributes in your dispatch.xml
file, as shown below.
Converted dispatch.yaml
file:
dispatch:
- url: '*/favicon.ico'
module: default
- url: 'simple-sample.uc.r.appspot.com/'
module: default
- url: '*/mobile/*'
module: mobile-frontend
Original dispatch.xml
file
<?xml version="1.0" encoding="UTF-8"?>
<dispatch-entries>
<dispatch>
<url>*/favicon.ico</url>
<module>default</module>
</dispatch>
<dispatch>
<url>simple-sample.uc.r.appspot.com/</url>
<module>default</module>
</dispatch>
<dispatch>
<url>*/mobile/*</url>
<module>mobile-frontend</module>
</dispatch>
</dispatch-entries>
For more information, see the dispatch.yaml
reference
documentation
index.yaml
Create an index.yaml
file with an indexes
object containing a list of
objects, each with fields that correspond to each of the <datastore-index>
tag attributes in your datastore-indexes.xml
file, as shown below.
Converted index.yaml
file:
indexes:
- ancestor: false
kind: Employee
properties:
- direction: asc
name: lastName
- direction: desc
name: hireDate
- ancestor: false
kind: Project
properties:
- direction: asc
name: dueDate
- direction: desc
name: cost
Original datastore-index.xml
file:
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes
autoGenerate="true">
<datastore-index kind="Employee" ancestor="false">
<property name="lastName" direction="asc" />
<property name="hireDate" direction="desc" />
</datastore-index>
<datastore-index kind="Project" ancestor="false">
<property name="dueDate" direction="asc" />
<property name="cost" direction="desc" />
</datastore-index>
</datastore-indexes>
For more information, see the index.yaml
reference
documentation.
queue.yaml
Create a queue.yaml
file with a queue
object containing a list of
objects, each with fields that correspond to each of the <queue>
tag
attributes in your queue.xml
file, as shown below.
Converted queue.yaml
file:
queue:
- name: fooqueue
mode: push
rate: 1/s
retry_parameters:
task_retry_limit: 7
task_age_limit: 2d
- name: barqueue
mode: push
rate: 1/s
retry_parameters:
min_backoff_seconds: 10
max_backoff_seconds: 200
max_doublings: 0
Original queue.xml
file:
<queue-entries>
<queue>
<name>fooqueue</name>
<rate>1/s</rate>
<retry-parameters>
<task-retry-limit>7</task-retry-limit>
<task-age-limit>2d</task-age-limit>
</retry-parameters>
</queue>
<queue>
<name>barqueue</name>
<rate>1/s</rate>
<retry-parameters>
<min-backoff-seconds>10</min-backoff-seconds>
<max-backoff-seconds>200</max-backoff-seconds>
<max-doublings>0</max-doublings>
</retry-parameters>
</queue>
<queue-entries>