Bermigrasi ke plugin Gradle berbasis gcloud CLI
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Jika sebelumnya Anda menggunakan plugin berbasis Java App Engine SDK
(com.google.appengine.appengine-gradle
) dan ingin pindah ke
Google Cloud CLI, bermigrasilah ke layanan berbasis gcloud CLI (com.google.cloud.tools.appengine-gradle
).
Manfaat plugin berbasis gcloud CLI
Mengupgrade ke plugin baru akan memberikan manfaat berikut:
Menggunakan kredensial autentikasi yang sama seperti semua perintah berbasis gcloud CLI lainnya, yang dihasilkan dari alur gcloud auth login
standar.
Mendukung lingkungan fleksibel App Engine.
Mengupdate server pengembangan lokal secara otomatis sebagai bagian dari alur update gcloud CLI standar.
Mendukung deployment konfigurasi layanan App Engine (cron, queue, dos, dispatch), secara terpisah dari layanan Anda.
Perbedaan penting
Sebelum bermigrasi, perhatikan perbedaan penting berikut:
- Dependensi gcloud CLI
- Plugin lama berjalan tanpa dependensi lingkungan lokal tertentu, selain Java, tetapi plugin baru ini mengharuskan Anda menginstal gcloud CLI.
- Tidak ada pembuatan dokumen penemuan Endpoint
- Plugin baru ini tidak menghasilkan dokumen penemuan Endpoint, yaitu fitur yang tersedia di plugin terpisah. Menjalankan backend Endpoint tidak lagi memerlukan pembuatan file ini pada langkah build karena server kini membuatnya saat runtime. Sebaiknya gunakan plugin baru ini hanya jika Anda perlu membuat library klien, seperti untuk iOS atau Android. Pelajari
plugin baru lebih lanjut dengan meninjau panduan
Bermigrasi ke Framework Endpoint untuk
App Engine.
- Format file EAR tidak lagi didukung
- Plugin baru ini tidak lagi mendukung format file EAR untuk menjalankan dan men-deploy beberapa layanan secara bersamaan.
- Perintah deployment baru
- Plugin lama memanggil perintah
appcfg
untuk men-deploy aplikasi, sedangkan plugin baru di-deploy menggunakan gcloud CLI baru.
- Peningkatan Datanucleus JPA/JDO harus dikonfigurasi secara manual
- Jika project Anda menggunakan peningkatan JPA/JDO Datanucleus
gradle-appengine-plugin
, Anda harus mengonfigurasi peningkatan Datanucleus secara manual setelah beralih ke plugin berbasis gcloud CLI. Lihat contoh dari Stackoverflow.
- Android Studio tidak didukung
- Anda dapat mengalihkan project Android Studio untuk menggunakan plugin baru ini, tetapi
server pengembangan dan dukungan deployment App Engine Android Studio
tidak berfungsi dengan plugin baru ini. Untuk menjalankan dan men-deploy aplikasi, Anda harus
memanggil Gradle secara langsung.
Penggunaan file konfigurasi XML didukung, tetapi tidak YAML.
Bermigrasi ke plugin baru
Hapus konfigurasi gradle-appengine-plugin
lama dan impor dari file
build.gradle
Anda.
Tambahkan plugin baru ke classpath
dari bagian buildscript
file build.gradle
Anda:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.0.1'
}
}
Di root layanan Anda, jalankan perintah berikut untuk memverifikasi bahwa Anda dapat menjalankan aplikasi secara lokal:
gradle appengineRun
Di bagian buildscript
dari file build.gradle
, konfigurasikan deployment Anda dengan menentukan project ID dan versi Anda:
appengine {
deploy {
version = 'v1'
project = "your GCP project ID"
}
}
Alat baru ini mengabaikan elemen aplikasi dan versi di file
appengine-web.xml
Anda.
Di root layanan Anda, jalankan perintah berikut untuk memverifikasi bahwa Anda dapat men-deploy aplikasi:
gradle appengineDeploy
Memigrasikan konfigurasi multi-layanan berbasis EAR
Plugin baru tidak mendukung pengemasan EAR. Sebagai gantinya, fitur ini mendukung untuk menjalankan
beberapa layanan secara lokal tanpa langkah pengemasan khusus.
Untuk memigrasikan project Gradle berbasis EAR:
Pilih layanan utama yang akan bertanggung jawab untuk menjalankan layanan lainnya. Anda harus memilih layanan default, tetapi layanan tersebut dapat berupa salah satu
layanan yang dijalankan bersama.
Dalam konfigurasi appengine
Anda, ubah entri run.services
agar menyertakan
semua layanan yang harus dijalankan oleh server pengembangan lokal.
Contoh struktur proyek:
../{projectRoot}/
build.gradle
settings.gradle (includes default-service & secondary-service)
{your-default-service}/build.gradle {includes appengine-gradle-plugin}
….
{your-default-service}/src/main/webapp/WEB-INF/appengine-web.xml
{your-secondary-service}build.gradle {includes appengine-gradle-plugin}
….
{your-secondary-service}/src/main/webapp/WEB-INF/appengine-web.xml
Contoh buildscript build.gradle
:
appengine {
run {
// configure the app to point to the right service directories
services = [
projectAsService(project),
projectAsService(":another-module")
]
}
}
// helper method to obtain correct directory and set up dependencies
def getExplodedAppDir(Project serverProject) {
// if not 'this' module, then do some setup.
if (serverProject != project) {
// make sure we evaluate other modules first so we get the right value
evaluationDependsOn(serverProject.path)
// make sure we build "run" depends on the other modules exploding wars
project.tasks.appengineRun.dependsOn serverProject.tasks.explodeWar
}
return serverProject.tasks.explodeWar.explodedAppDirectory
}
Perintah Gradle berbasis App Engine SDK vs. gcloud CLI
Tabel berikut menunjukkan berbagai cara memanggil plugin Gradle, bergantung pada apakah Anda menggunakan plugin Gradle berbasis App Engine SDK atau plugin Gradle berbasis gcloud CLI.
Tindakan |
Berbasis App Engine SDK |
Berbasis gcloud CLI |
Menjalankan aplikasi secara lokal |
appengine:devserver |
appengineRun |
Men-deploy aplikasi, versi, atau layanan baru. |
appengine:update |
appengineDeploy |
Menetapkan versi aplikasi default. |
appengine:set_default_version |
traffic set layanan aplikasi gcloud atau migrasi versi aplikasi gcloud |
Mengupdate cron job aplikasi. |
appengine:update_cron |
appengineDeployCron |
Mengupdate konfigurasi pengiriman aplikasi. |
appengine:update_dispatch |
appengineDeployDispatch |
Mengupdate konfigurasi perlindungan DoS aplikasi. |
appengine:update_dos |
appengineDeployDos |
Memperbarui definisi task queue aplikasi. |
appengine:update_queues |
appengineDeployQueue |
Memperbarui Indeks Datastore. |
appengine:update_indexes |
appengineDeployIndex |
Menghapus indeks yang tidak digunakan dari aplikasi. |
appengine:vacuum_indexes |
Pembersihan indeks datastore gcloud |
Memulai versi modul yang ditentukan. |
appengine:start_module_version |
versi aplikasi gcloud dimulai |
Menghentikan versi modul yang ditentukan. |
appengine:stop_module_version |
versi aplikasi gcloud berhenti |
Melakukan rollback update yang sedang berlangsung. |
appengine:rollback |
versi aplikasi gcloud dimulai, versi aplikasi gcloud berhenti |
Langkah berikutnya
- Setelah berhasil bermigrasi ke plugin baru, Anda dapat
menguji dan
men-deploy
aplikasi Anda.
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-08-19 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-19 UTC."],[[["\u003cp\u003eMigrate from the Java App Engine SDK-based plugin (\u003ccode\u003ecom.google.appengine.appengine-gradle\u003c/code\u003e) to the gcloud CLI-based plugin (\u003ccode\u003ecom.google.cloud.tools.appengine-gradle\u003c/code\u003e) for enhanced benefits, including unified authentication, flexible environment support, and automatic updates.\u003c/p\u003e\n"],["\u003cp\u003eThe new gcloud CLI-based plugin requires the gcloud CLI to be installed and no longer supports Endpoints discovery doc generation within the plugin, as it's now handled at runtime, nor does it support the EAR file format for multiple services.\u003c/p\u003e\n"],["\u003cp\u003eManual configuration of Datanucleus enhancement is necessary if your project uses JPA/JDO, and Android Studio's built-in App Engine support is incompatible, requiring direct Gradle invocation.\u003c/p\u003e\n"],["\u003cp\u003eMigrating from EAR-based multi-service configurations to the new plugin involves selecting a primary service and configuring the \u003ccode\u003erun.services\u003c/code\u003e entry in your \u003ccode\u003ebuild.gradle\u003c/code\u003e to include all services for local development, replacing EAR packaging entirely.\u003c/p\u003e\n"],["\u003cp\u003eThe gcloud CLI-based plugin uses new Gradle commands like \u003ccode\u003eappengineRun\u003c/code\u003e for local development and \u003ccode\u003eappengineDeploy\u003c/code\u003e for deployment, replacing the old SDK-based commands such as \u003ccode\u003eappengine:devserver\u003c/code\u003e and \u003ccode\u003eappengine:update\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Migrating to the gcloud CLI-based Gradle plugin\n\nIf you previously used the Java App Engine SDK-based plugin\n(`com.google.appengine.appengine-gradle`) and want to move to the new\n[Google Cloud CLI](/sdk/downloads), migrate to the gcloud CLI-based\n(`com.google.cloud.tools.appengine-gradle`) plugin.\n\nBenefits of the gcloud CLI-based plugin\n---------------------------------------\n\nUpgrading to the new plugin provides the following benefits:\n\n- Uses the same authentication credentials as all other gcloud CLI\n -based commands, which are produced from the standard `gcloud auth login`\n flow.\n\n- Supports the App Engine flexible environment.\n\n- Updates the local development server automatically as part of the standard\n gcloud CLI update flow.\n\n- Supports deploying App Engine service (cron, queues, dos, dispatch)\n configurations, independently from your service.\n\nNotable differences\n-------------------\n\nBefore you migrate, be aware of these notable differences:\n\ngcloud CLI dependency\n: The old plugin runs without any specific local environment dependencies,\n besides Java, but the new plugin requires that you have the\n gcloud CLI installed.\n\nNo Endpoints discovery doc generation\n: The new plugin does not generate Endpoints discovery docs, a\n feature available in a separate plugin. Running your Endpoints\n backend no longer requires generating this file in a build step as the server\n now generates it at runtime. You should use the new plugin only if you need\n to generate client libraries such as for iOS or Android. Learn more about the\n new plugins by reviewing the [Migrating to Endpoints Frameworks for\n App Engine](/endpoints/docs/frameworks/legacy/v1/java/migrating)\n guide.\n\nEAR file format no longer supported\n: The new plugin no longer supports the\n EAR file format for running and deploying multiple services at the same time.\n\nNew deployment command\n: The old plugin calls the `appcfg` command to deploy\n applications, while the new plugin deploys using the new gcloud CLI.\n\nJPA/JDO Datanucleus enhancement must be manually configured\n: If your project\n uses the `gradle-appengine-plugin`'s JPA/JDO Datanucleus enhancement, you must\n manually configure Datanucleus enhancement after switching to the\n gcloud CLI-based plugin. See an [example from Stackoverflow](https://stackoverflow.com/questions/29279503/how-can-i-run-datanucleus-enhancer-from-gradle).\n\nAndroid Studio is not supported\n: You can switch your Android Studio project to use the new plugin, but the\n Android Studio App Engine development server and deployment support\n does not work with this new plugin. To run and deploy your app, you have to\n invoke Gradle directly.\n\nUse of XML configuration files is supported, but not YAML.\n\nMigrating to the new plugin\n---------------------------\n\n1. Remove the old `gradle-appengine-plugin` configuration and imports from your\n `build.gradle` file.\n\n2. Add the new plugin to the `classpath` of your `build.gradle` file's\n `buildscript` section:\n\n buildscript {\n repositories {\n mavenCentral()\n }\n\n dependencies {\n classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.0.1'\n }\n }\n\n3. At the root of your service, run the following command to verify that you can\n run your app locally:\n\n gradle appengineRun\n\n4. In your `build.gradle` file's `buildscript` section, configure your\n deployment by specifying your project ID and version:\n\n appengine {\n deploy {\n version = 'v1'\n project = \"your GCP project ID\"\n }\n }\n\n The new tooling ignores the application and version elements in your\n `appengine-web.xml` file.\n5. At the root of your service, run the following command to verify that you can\n deploy your application:\n\n gradle appengineDeploy\n\nMigrating EAR based multi-service configurations\n------------------------------------------------\n\nThe new plugin does not support EAR packaging. Instead, it supports running\nmultiple services locally without any special packaging steps.\n\nTo migrate your EAR-based Gradle project:\n\n1. Pick a primary service that will be responsible for running the rest of the\n services. You should select your default service, but it can be any of the\n services that are run together.\n\n2. In your `appengine` configuration, modify the `run.services` entry to include\n all the services that should be run by the local development server.\n\n An example project structure: \n\n ../{projectRoot}/\n build.gradle\n settings.gradle (includes default-service & secondary-service)\n {your-default-service}/build.gradle {includes appengine-gradle-plugin}\n ....\n {your-default-service}/src/main/webapp/WEB-INF/appengine-web.xml\n {your-secondary-service}build.gradle {includes appengine-gradle-plugin}\n ....\n {your-secondary-service}/src/main/webapp/WEB-INF/appengine-web.xml\n\n An example `build.gradle` buildscript: \n\n appengine {\n run {\n // configure the app to point to the right service directories\n services = [\n projectAsService(project),\n projectAsService(\":another-module\")\n ]\n }\n }\n\n // helper method to obtain correct directory and set up dependencies\n def getExplodedAppDir(Project serverProject) {\n // if not 'this' module, then do some setup.\n if (serverProject != project) {\n // make sure we evaluate other modules first so we get the right value\n evaluationDependsOn(serverProject.path)\n // make sure we build \"run\" depends on the other modules exploding wars\n project.tasks.appengineRun.dependsOn serverProject.tasks.explodeWar\n }\n return serverProject.tasks.explodeWar.explodedAppDirectory\n }\n\nApp Engine SDK-based vs gcloud CLI-based Gradle commands\n--------------------------------------------------------\n\nThe following table shows the different ways you invoke the Gradle plugin,\ndepending on whether you use the App Engine SDK-based Gradle plugin or\nthe [gcloud CLI-based Gradle](/appengine/docs/legacy/standard/java/using-gradle)\nplugin.\n\nWhat's next\n-----------\n\n- Now that you have migrated to the new plugin successfully, you can [test](/appengine/docs/legacy/standard/java/using-gradle#testing_gradle_app) and [deploy](/appengine/docs/legacy/standard/java/using-gradle#deploying_gradle_app) your application."]]