App Engine Maven 外掛程式 (以 Cloud SDK 為基礎) 的目標和參數

在您的專案中新增以 Cloud SDK 為基礎的 App Engine Maven 外掛程式之後,就能使用下列 App Engine 特定的 Maven 目標:

目標 說明
appengine:deploy 將應用程式暫存及部署至 App Engine。
appengine:deployCron cron.yaml 設定檔暫存及部署至 App Engine。
appengine:deployDispatch dispatch.yaml 設定檔暫存及部署至 App Engine。
appengine:deployDos dos.yaml 設定檔暫存及部署至 App Engine。
appengine:deployIndex index.yaml 設定檔暫存及部署至 App Engine。
appengine:deployQueue queue.yaml 設定檔暫存及部署至 App Engine。
appengine:help 顯示有關 App Engine Maven 外掛程式的說明資訊。
appengine:run 執行 App Engine 開發伺服器。當伺服器正在執行時,會持續檢查確認 appengine-web.xml 是否已變更。若已變更,伺服器會重新載入應用程式。您無須因為 appengine-web.xml 有所變更而停止並重新啟動應用程式。
appengine:stage 針對部署產生應用程式目錄。
appengine:start 開始非同步執行 App Engine devserver 開發伺服器,然後返回指令列。當這個目標執行時,除了 Maven 會持續處理目標,並在伺服器啟動並執行後結束以外,所有行為都與 run 目標相同。
appengine:stop 停止執行中的 App Engine 網路開發伺服器。

如要進一步瞭解如何設定及使用 Maven,請參閱使用 Maven

Maven 外掛程式版本 (以 Java 適用的 App Engine SDK 為基礎) 的使用者,可在相關的參考說明文件中找到先前外掛程式目標與 gcloud 指令的對應。

目標參數

每個目標都有相關聯的參數可供使用。您可以在 pom.xml 或指令列中指定這些設定。

如要調整 pom.xml 中的設定,請在 <configuration> 區段加入參數名稱。

以下範例會分割 JAR 檔案、停止之前執行的版本,然後指定 Cloud SDK 路徑:

<plugins>
   <plugin>
     <groupId>com.google.cloud.tools</groupId>
     <artifactId>appengine-maven-plugin</artifactId>
     <version>2.0.0</version>
     <configuration>
       <stage.enableJarSplitting>true</stage.enableJarSplitting>
       <deploy.stopPreviousVersion>true</deploy.stopPreviousVersion>
       <cloudSdkPath>/usr/foo/path/to/cloudsdk</cloudSdkPath>
     </configuration>
  </plugin>
</plugins>

此外,您也可以按照模式 -D[USER_PROPERTY]=[PARAMETER_VALUE],在指令列中調整這些設定。

以下範例指定暫存應用程式的目錄:

mvn appengine:stage -Dapp.stage.stagingDirectory=[YOUR_STAGING_DIRECTORY]

有關每個目標可用的參數清單,請參閱以下各小節。

appengine:deploy

將應用程式暫存及部署至 App Engine。

您可以使用下列參數,其中有部分參數與 gcloud app deploy 指令列標記對應:

參數 說明 外掛程式設定 指令列設定
appEngineDirectory .yaml 設定檔 (cron、inex 等) 的位置,設定的特定部署作業 (appengineDeployCron 等) 將從這個位置部署。若為標準應用程式,您的 .xml 設定檔會在暫存期間轉換為 .yaml,並放在 target/appengine-staging/WEB-INF/appengine-generated 中。 deploy.appEngineDirectory app.deploy.appEngineDirectory
bucket Cloud Storage 值區,用來暫存與部署作業相關聯的檔案。如果未指定這個引數,系統會使用應用程式的預設值區。 deploy.bucket app.deploy.bucket
cloudSdkPath 選用參數,可設定 Google Cloud SDK 的位置。 cloudSdkPath cloudSdkPath
compileEncoding 編譯 JSP 時使用的字元編碼。僅適用於 App Engine 標準環境。 stage.compileEncoding app.stage.compileEncoding
deleteJsps 編譯後刪除 JSP 來源檔案。僅適用於 App Engine 標準環境。 stage.deleteJsps app.stage.deleteJsps
deployables 您要部署之服務或設定的 YAML 檔案。預設為暫存目錄中的 app.yaml 檔案。如果找不到這個檔案,會嘗試在暫存目錄中自動產生必要的設定檔 (例如 app.yaml)。 deploy.deployables app.deploy.deployables
disableJarJsps 停用新增從 JSP 產生的類別。僅適用於 App Engine 標準環境。 stage.disableJarJsps app.stage.disableJarJsps
dockerBuild 執行託管 (remote) 或本機 (local) Docker 建構。如要執行本機建構,您必須有設定正確的本機 Docker 環境。預設值為託管建構。 deploy.dockerBuild app.deploy.dockerBuild
dockerfile dockerfile 的位置,供彈性環境上執行之 App Engine 標準環境應用程式使用。僅適用於 App Engine 標準環境。 stage.dockerfile app.stage.dockerfile
enableJarClasses WEB-INF/classes 內容封裝成 Jar 檔案。僅適用於 App Engine 標準環境。 stage.enableJarClasses app.stage.enableJarClasses
enableJarSplitting 將大於 10 MB 的 JAR 檔案拆分成較小的片段。僅適用於 App Engine 標準環境。 stage.enableJarSplitting app.stage.enableJarSplitting
enableQuickstart 使用 Jetty 快速入門處理 Servlet 註解。僅適用於 App Engine 標準環境。 stage.enableQuickstart app.stage.enableQuickstart
force 強制部署,並覆寫任何先前部署到這個版本的進行中作業。 deploy.force app.deploy.force
imageUrl 使用特定的 Docker 映像檔進行部署。Docker 網址必須來自其中一個有效的 Google Container Registry 主機名稱。 deploy.imageUrl app.deploy.imageUrl
jarSplittingExcludes 將符合逗號分隔 SUFFIXES 清單的檔案排除在所有 JAR 檔案之外。僅適用於 App Engine 標準環境。 stage.jarSplittingExcludes app.stage.jarSplittingExcludes
project 要用於這個叫用的 Google Cloud Platform 專案名稱。預設為初始化 gcloud 時選取的目前專案。 deploy.project app.deploy.project
promote 升級部署版本,以接收所有流量。預設值為 True deploy.promote app.deploy.promote
server 要連線的 App Engine 伺服器。通常,您不需要變更這個值。 deploy.server app.deploy.server
sourceDirectory 必填。已編譯的網路應用程式檔案,或爆炸的 WAR 的位置。這會做為暫存來源使用。僅適用於 App Engine 標準環境。預設值為 ${project.build.directory}/${project.build.finalName} stage.sourceDirectory app.stage.sourceDirectory
stagingDirectory 必填。用來暫存應用程式的目標目錄。預設值為 ${project.build.directory}/appengine-staging stage.stagingDirectory app.stage.stagingDirectory
stopPreviousVersion 部署接收所有流量的新版本時,停止之前執行的版本。 deploy.stopPreviousVersion app.deploy.stopPreviousVersion
version 將由此部署建立或取代的應用程式版本。如果您未指定版本,系統會為您產生一個。 deploy.version app.deploy.version

appengine:help

顯示有關 App Engine Maven 外掛程式的說明資訊。

如要顯示參數詳細資料,請呼叫:

mvn appengine:help -Ddetail=true -Dgoal=[GOAL_NAME]

您可以使用下列參數:

參數 說明 使用者屬性
detail 若為 true,則顯示每個目標的所有可設定屬性。預設值為 False detail
goal 要顯示說明的目標名稱。若未指定,將會顯示所有目標。 goal
indentSize 每個縮排層級的空格數,應為正數。預設值為 2 indentSize
lineLength 顯示行的長度上限,應為正數。預設值為 80 lineLength

appengine:run

執行 App Engine 開發網路伺服器。當伺服器正在執行時,會持續檢查確認 appengine-web.xml 是否已變更。若已變更,伺服器會重新載入應用程式。您無須因為 appengine-web.xml 有所變更而停止並重新啟動應用程式。

您可以使用以下參數,其中有部分參數與本機開發伺服器指令列標記對應:

總共有兩個開發網路伺服器版本,即 v1 (預設) 與 v2-alpha。

以下是 v1 的有效屬性。

屬性 說明 外掛程式設定 指令列設定
environment 傳送至本機開發伺服器的環境變數對應。範例:

<environment>
  <key1>value1</key1>
  <key2>value2</key2>
</environment>
      
devserver.environment app.devserver.environment
jvmFlags 啟動應用程式執行個體時傳送到 java 指令的其他引數。可以指定一次以上。例如:-Xmx1024m -Xms256m devserver.jvmFlags app.devserver.jvmFlags
host 應用程式服務應繫結的主機名稱。預設值為 localhost devserver.host app.devserver.host
port 應用程式服務應繫結的最低通訊埠。預設值為 8080 devserver.port app.devserver.port
serverVersion 要啟動的伺服器版本,選項有「1」與「2-alpha」。預設值為「1」。 devserver.serverVersion app.devserver.serverVersion
services 必填。所含目錄中包含 WEB-INF/web.xml 之目錄的路徑。預設值為 build/exploded-app devserver.services app.devserver.services
startSuccessTimeout 在背景等待開發應用程式伺服器啟動的秒數 (使用 appengineStart 時)。 devserver.startSuccessTimeout app.devserver.startSuccessTimeout

以下是 v2-alpha 的有效屬性。

參數 說明 外掛程式設定 指令列設定
adminHost 管理伺服器應繫結的主機名稱。預設值為 localhost devserver.adminHost app.devserver.adminHost
adminPort 管理伺服器應繫結的通訊埠。預設值為 8000 devserver.adminPort app.devserver.adminPort
allowSkippedFiles 使應用程式可以讀取在 app.yaml skip_files 或靜態控制代碼中指定的檔案。預設值為 False devserver.allowSkippedFiles app.devserver.allowSkippedFiles
apiPort API 呼叫之伺服器應繫結的通訊埠。預設值為 0 devserver.apiPort app.devserver.apiPort
appYamls 必填。yaml 檔案的路徑,或包含 yaml 檔案的目錄路徑,或包含 WEB-INF/web.xml 的目錄路徑。預設值為 ${project.build.directory}/ ${project.build.finalName} devserver.appYamls app.devserver.appYamls
authDomain 要使用的授權網域名稱。預設值為 gmail.com devserver.authDomain app.devserver.authDomain
automaticRestart 當檔案服務相關的檔案發生變更時,自動重新啟動執行個體。預設值為 True devserver.automaticRestart app.devserver.automaticRestart
clearDatastore 啟動時清除應用程式的本機資料儲存庫。 devserver.clearDatastore app.devserver.clearDatastore
cloudSdkPath 選用參數,可設定 Google Cloud SDK 的位置。 cloudSdkPath cloudSdkPath
customEntrypoint 如為彈性環境中的自訂執行階段,請指定自訂執行階段服務的進入點。存在這類服務時,此為必填參數。在字串中納入 [PORT] 以將通訊埠編號當成引數傳入。例如:gunicorn -b localhost:[PORT] mymodule:application devserver.customEntrypoint app.devserver.customEntrypoint
defaultGcsBucketName 預設 Google Cloud Storage 值區名稱。 devserver.defaultGcsBucketName app.devserver.defaultGcsBucketName
devAppserverLogLevel 記錄開發網路伺服器所產生記錄訊息的記錄層級將不會顯示在主控台上 (此標記對診斷 dev_appserver.py 中的問題,比對診斷應用程式程式碼中的問題更為實用)。選項有 debuginfowarningcriticalerror。預設值為 info devserver.devAppserverLogLevel app.devserver.devAppserverLogLevel
host 應用程式服務應繫結的主機名稱。預設值為 localhost devserver.host app.devserver.host
jvmFlags 啟動應用程式執行個體時傳送到 java 指令的其他引數。可以指定一次以上。例如:-Xmx1024m -Xms256m devserver.jvmFlags app.devserver.jvmFlags
logLevel 記錄應用程式程式碼所產生記錄訊息的記錄層級將不會顯示在主控台上。選項有 debuginfowarningcriticalerror。預設值為 info devserver.logLevel app.devserver.logLevel
maxModuleInstances 可以針對特定服務啟動的執行階段執行個體數量上限。此值可以是整數,在此情況下,所有服務都受限於該執行個體數量或 module:max_instances 的逗號分隔清單。例如:default:5,backend:3 devserver.maxModuleInstances app.devserver.maxModuleInstances
port 應用程式服務應繫結的最低通訊埠。預設值為 8080 devserver.port app.devserver.port
pythonStartupArgs devserver.pythonStartupScript 中指定的指令碼可以使用的引數。 devserver.pythonStartupArgs app.devserver.pythonStartupArgs
pythonStartupScript 啟動新 Python 執行階段執行個體時執行的指令碼 (對於偵錯工具這類的工具而言相當實用)。 devserver.pythonStartupScript app.devserver.pythonStartupScript
runtime 指定您要使用的預設執行階段。有效的執行階段有 javacustomjava7 devserver.runtime app.devserver.runtime
skipSdkUpdateCheck 不檢查 SDK 更新。若為 false,則使用 .appcfg_nag 來決定。預設值為 False devserver.skipSdkUpdateCheck app.devserver.skipSdkUpdateCheck
storagePath 與應用程式相關之資料 (資料儲存庫、Blobstore 等) 的路徑。 devserver.storagePath app.devserver.storagePath
threadsafeOverride 覆寫應用程式的執行緒安全設定。此值可以是布林值,在此情況下,所有服務中的執行緒安全設定都將遭到覆寫,或為 service:threadsafe_override 的逗號分隔清單。例如:default:False,backend:True devserver.threadsafeOverride app.devserver.threadsafeOverride
useMtimeFileWatcher 使用 mtime 輪詢作業來偵測原始碼變更。如果使用分散式檔案系統從遠端電腦修改程式碼,則會很實用。預設值為 False devserver.useMtimeFileWatcher app.devserver.useMtimeFileWatcher

appengine:stage

針對部署產生應用程式目錄。

您可以使用下列參數:

參數 說明 外掛程式設定 指令列設定
cloudSdkPath 選用參數,可設定 Google Cloud SDK 的位置。 cloudSdkPath cloudSdkPath
compileEncoding 編譯 JSP 時使用的字元編碼。僅適用於 App Engine 標準環境。 stage.compileEncoding app.stage.compileEncoding
deleteJsps 編譯後刪除 JSP 來源檔案。僅適用於 App Engine 標準環境。 stage.deleteJsps app.stage.deleteJsps
dockerfile dockerfile 的位置,供彈性環境上執行之 App Engine 標準應用程式使用。僅適用於 App Engine 標準環境。 stage.dockerfile app.stage.dockerfile
enableJarClasses WEB-INF/classes 內容封裝成 Jar 檔案。僅適用於 App Engine 標準環境。 stage.enableJarClasses app.stage.enableJarClasses
enableJarSplitting 將大於 10 MB 的 JAR 檔案拆分成較小的片段。僅適用於 App Engine 標準環境。 stage.enableJarSplitting app.stage.enableJarSplitting
enableQuickstart 使用 Jetty 快速入門處理 Servlet 註解。僅適用於 App Engine 標準環境。 stage.enableQuickstart app.stage.enableQuickstart
jarSplittingExcludes 將符合逗號分隔 SUFFIXES 清單的檔案排除在所有 JAR 檔案之外。僅適用於 App Engine 標準環境。 stage.jarSplittingExcludes app.stage.jarSplittingExcludes
sourceDirectory 必填。已編譯的網路應用程式檔案,或爆炸的 WAR 的位置。這會做為暫存來源使用。僅適用於 App Engine 標準環境。預設值為 ${project.build.directory}/${project.build.finalName} stage.sourceDirectory app.stage.sourceDirectory
stagingDirectory 必填。待暫存應用程式的來源目錄。預設值為 ${project.build.directory}/appengine-staging stage.stagingDirectory app.stage.stagingDirectory

appengine:start

開始非同步執行 App Engine 開發網路伺服器,然後返回指令列。當這個目標執行時,除了 Maven 會持續處理目標,並在伺服器啟動並執行後結束以外,所有行為都與 run 目標相同。

您可以使用下列參數:

參數 說明 外掛程式設定 指令列設定
adminHost 管理伺服器應繫結的主機名稱。預設值為 localhost devserver.adminHost app.devserver.adminHost
adminPort 管理伺服器應繫結的通訊埠。預設值為 8000 devserver.adminPort app.devserver.adminPort
allowSkippedFiles 使應用程式可以讀取在 app.yaml skip_files 或靜態控制代碼中指定的檔案。預設值為 False devserver.allowSkippedFiles app.devserver.allowSkippedFiles
apiPort API 呼叫之伺服器應繫結的通訊埠。預設值為 0 devserver.apiPort app.devserver.apiPort
appYamls 必填。yaml 檔案的路徑,或包含 yaml 檔案的目錄路徑,或包含 WEB-INF/web.xml 的目錄路徑。預設值為 ${project.build.directory}/ ${project.build.finalName} devserver.appYamls app.devserver.appYamls
authDomain 要使用的授權網域名稱。預設值為 gmail.com devserver.authDomain app.devserver.authDomain
automaticRestart 當檔案服務相關的檔案發生變更時,自動重新啟動執行個體。預設值為 True devserver.automaticRestart app.devserver.automaticRestart
cloudSdkPath 選用參數,可設定 Google Cloud SDK 的位置。 cloudSdkPath cloudSdkPath
customEntrypoint 如為彈性環境中的自訂執行階段,請指定自訂執行階段服務的進入點。存在這類服務時,此為必填參數。在字串中納入 [PORT] 以將通訊埠編號當成引數傳入。例如:gunicorn -b localhost:[PORT] mymodule:application devserver.customEntrypoint app.devserver.customEntrypoint
defaultGcsBucketName 預設 Google Cloud Storage 值區名稱。 devserver.defaultGcsBucketName app.devserver.defaultGcsBucketName
devAppserverLogLevel 記錄開發伺服器所產生記錄訊息的記錄層級將不會顯示在主控台上 (此標記對診斷 dev_appserver.py 中的問題,比對診斷應用程式程式碼中的問題更為實用)。選項:debug、info、warning、critical 與 error。預設值為 info devserver.devAppserverLogLevel app.devserver.devAppserverLogLevel
host 應用程式服務應繫結的主機名稱。預設值為 localhost devserver.host app.devserver.host
jvmFlags 啟動應用程式執行個體時傳送到 java 指令的其他引數。可以指定一次以上。範例:-Dapp.devserver.jvmFlags=-Xmx1024m -Xms256m devserver.jvmFlags app.devserver.jvmFlags
logLevel 記錄應用程式程式碼所產生記錄訊息的記錄層級將不會顯示在主控台上。選項:debug、info、warning、critical 與 error。預設值為 info devserver.logLevel app.devserver.logLevel
maxModuleInstances 可以針對特定服務啟動的執行階段執行個體數量上限。此值可以是整數,在此情況下,所有服務都受限於該執行個體數量或 module:max_instances 的逗號分隔清單。例如:default:5,backend:3 devserver.maxModuleInstances app.devserver.maxModuleInstances
port 應用程式服務應繫結的最低通訊埠。預設值為 8080 devserver.port app.devserver.port
pythonStartupArgs devserver.pythonStartupScript 中指定的指令碼可以使用的引數。 devserver.pythonStartupArgs app.devserver.pythonStartupArgs
pythonStartupScript 啟動新 Python 執行階段執行個體時執行的指令碼 (對於偵錯工具這類的工具而言相當實用)。 devserver.pythonStartupScript app.devserver.pythonStartupScript
runtime 指定您要使用的預設執行階段。有效的執行階段有 javacustomjava7 devserver.runtime app.devserver.runtime
skipSdkUpdateCheck 略過檢查 SDK 更新。若為 false,則使用 .appcfg_nag 來決定。預設值為 False devserver.skipSdkUpdateCheck app.devserver.skipSdkUpdateCheck
startSuccessTimeout 等待伺服器啟動的秒數。如果設定為 0,表示無等待時間。預設值為 30 秒。 devserver.startSuccessTimeout app.devserver.startSuccessTimeout
storagePath 與應用程式相關之資料 (資料儲存庫、Blobstore 等) 的路徑。 devserver.storagePath app.devserver.storagePath
threadsafeOverride 覆寫應用程式的執行緒安全設定 - 此值可以是布林值,在此情況下,所有服務的執行緒安全設定都將遭到覆寫,或為 service:threadsafe_override 的逗號分隔清單。例如:default:False,backend:True devserver.threadsafeOverride app.devserver.threadsafeOverride
useMtimeFileWatcher 使用 mtime 輪詢作業來偵測原始碼變更。如果使用分散式檔案系統從遠端電腦修改程式碼,則會很實用。預設值為 False devserver.useMtimeFileWatcher app.devserver.useMtimeFileWatcher

appengine:stop

停止執行中的 App Engine 網路開發伺服器。

您可以使用下列參數:

參數 說明 外掛程式設定 指令列設定
adminHost 管理伺服器應繫結的主機名稱。預設值為 localhost devserver.adminHost app.devserver.adminHost
adminPort 管理伺服器應繫結的通訊埠。預設值為 8000 devserver.adminPort app.devserver.adminPort
cloudSdkPath 選用參數,可設定 Google Cloud SDK 的位置。 cloudSdkPath cloudSdkPath

排解上傳錯誤

如果您是使用 deploy 目標,您的部署嘗試可能會失敗,並顯示類似這樣的訊息:404 Not Found This application does not exist (app_id=u'your-app-ID')。如果您有多個 Google 帳戶,並且正在使用錯誤的帳戶執行更新,就會發生這個錯誤。

如要解決此問題,請試著使用 gcloud auth login 來變更授權使用者。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Java 適用的 App Engine 標準環境