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

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

目標 說明
appengine:cloudSdkLogin 設定帳戶的通用 Cloud SDK 狀態。
appengine:deploy 將應用程式暫存及部署至 App Engine。
appengine:deployAll 將應用程式及其所有有效的 yaml 設定同時暫存及部署至 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:goal 執行作業,請將 skip 參數設定為 true

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
cloudSdkHome 用於設定 Cloud SDK 位置的選用參數。如未指定此屬性,則外掛程式會自動下載 Cloud SDK。 cloudSdkHome cloudSdkHome
cloudSdkVersion 用於指定所需 Cloud SDK 版本的選用參數。 cloudSdkVersion cloudSdkVersion
compileEncoding 編譯 JSP 時使用的字元編碼。僅適用於 App Engine 標準環境。 stage.compileEncoding app.stage.compileEncoding
deleteJsps 編譯後刪除 JSP 來源檔案。僅適用於 App Engine 標準環境。 stage.deleteJsps app.stage.deleteJsps
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
projectId 要用於這個叫用的 Google Cloud Platform 專案名稱。您必須指定 projectId,或者可以將 GCLOUD_CONFIG 設定為使用在 gcloud 設定狀態下設定的專案。 deploy.projectId app.deploy.projectId
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 有所變更而停止並重新啟動應用程式。

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

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

<environment>
  <key1>value1</key1>
  <key2>value2</key2>
</environment>
      
devserver.environment app.devserver.environment
jvmFlags 啟動應用程式執行個體時傳送到 java 指令的其他引數。可以指定不只一次。範例:

<jvmFlags>
  <jvmFlag>-Xmx1024m</jvmFlag>
  <jvmFlag>-Xms256m</jvmFlag>
</jvmFlags>
      
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

appengine:stage

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

您可以使用下列參數:

參數 說明 外掛程式設定 指令列設定
cloudSdkHome 用於設定 Cloud SDK 位置的選用參數。如未指定此屬性,則外掛程式會自動下載 Cloud SDK。 cloudSdkHome cloudSdkHome
cloudSdkVersion 用於指定所需 Cloud SDK 版本的選用參數。 cloudSdkVersion cloudSdkVersion
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 目標相同。

您可以使用下列參數:

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

<environment>
  <key1>value1</key1>
  <key2>value2</key2>
</environment>
      
devserver.environment app.devserver.environment
jvmFlags 啟動應用程式執行個體時傳送到 java 指令的其他引數。可以指定不只一次。範例:

<jvmFlags>
  <jvmFlag>-Xmx1024m</jvmFlag>
  <jvmFlag>-Xms256m</jvmFlag>
</jvmFlags>
      
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

appengine:stop

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

您可以使用下列參數:

參數 說明 外掛程式設定 指令列設定
host 管理伺服器應繫結的主機名稱。預設值為 localhost devserver.adminHost app.devserver.adminHost
port 管理伺服器應繫結的通訊埠。預設值為 8000 devserver.adminPort app.devserver.adminPort
cloudSdkHome 用於設定 Cloud SDK 位置的選用參數。如未指定此屬性,則外掛程式會自動下載 Cloud SDK。 cloudSdkHome cloudSdkHome

排解上傳錯誤

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

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

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

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

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