使用 Apache Maven 和 App Engine 外掛程式 (以 Cloud SDK 為基礎)

本頁說明如何使用 Apache Maven 這個軟體專案管理和全方位工具來管理 App Engine 專案。它可以建構網頁應用程式封存 (WAR) 檔案以部署至 App Engine 中。Google 提供 Maven 3.5 及以上版本支援的外掛程式和 Maven Archetypes。

Maven 會從 App Engine SDK 下載 Java 程式庫。您可以使用 Maven 在本機上測試您的應用程式,並將其部署至 App Engine。

事前準備

  1. 使用 Google Cloud Platform 主控台建立並設定您的 GCP 專案:
    前往 App Engine
    1. 選取或建立新的 GCP 專案。
    2. 如果您需要為專案建立 App Engine 應用程式,請按照系統提示,選取要放置 App Engine 應用程式的地區
  2. 如果您沒有 Java,請下載、安裝並進行設定。
  3. 在您專案的 pom.xml 中設定 Java 編譯器標記,指定 Java 8 位元組程式碼:
    Java 8
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
  4. 您必須安裝 Maven 3.5。如要查看是否已安裝 Maven 3.5,請執行:
     mvn -v
  5. 如果您未安裝適當的 Maven 版本:
    1. 從 Maven 網站下載 Maven 3.5。
    2. 在您的本機電腦上安裝 Maven 3.5。

      注意:Linux 使用者可能需要下載 Maven,而非使用 apt-get install 安裝 Maven 3.5。

  6. 您不需要安裝 Cloud SDK,因為外掛程式會在必要時自動安裝 SDK。

將 App Engine Maven 外掛程式新增至現有的專案 (選用)

如要在現有的 Maven 專案中使用 Google App Engine Maven 外掛程式,請將以下內容新增至專案 pom.xml 檔案的 plugins 區段中:

<plugin>
   <groupId>com.google.cloud.tools</groupId>
   <artifactId>appengine-maven-plugin</artifactId>
   <version>2.0.0</version>
</plugin>

選擇 App Engine 的原型

Maven Archetypes 可讓使用者使用範本來建立 Maven 專案。這些範本涵蓋一些常見的情境。App Engine 利用這項 Maven 功能在 Maven Central 提供一些有用的 App Engine 原型。選取適合您應用程式的 App Engine 原型:

應用程式類型 成果 說明
App Engine 應用程式 appengine-skeleton-archetype 產生全新、空白的 App Engine 專案,包含您的類別和資源所需的檔案和目錄。
App Engine 應用程式 appengine-standard-archetype 產生適用於 App Engine 標準環境的基本 Java 應用程式。
App Engine 應用程式 appengine-flexible-archetype 產生適用於 App Engine 彈性環境的基本 Java 應用程式。

使用 Maven 建立新的專案

在專案建立期間,Maven 會提示您提供專案的 groupIdartifactIdversionpackage

字詞 意義
groupId Maven 中的命名空間,可追蹤您的成果。當使用者在他們的 Maven 專案中使用您的專案時,groupId 將做為最終指定的依存性屬性。
artifactId 您的專案在 Maven 中的名稱。當您專案的使用者在自己的 Maven 專案中依賴您時,也會指定該名稱。
version 您要專案產生的初始 Maven 版本。建議您在 version 後面加上 -SNAPSHOT,這樣做可協助辨識在 Maven 版本外掛程式中正在開發的版本。詳情請參閱 Maven 指南的「使用版本外掛程式」一文。
package 在產生期間建立的 Java 套件。

建立新的 App Engine 應用程式

下列程序說明如何使用 appengine-skeleton-archetype 建立 App Engine 應用程式。

如要使用 App Engine Maven 原型建立 App Engine 應用程式:

  1. 切換至您要建構專案所在的目錄。

  2. 叫用以下 Maven 指令:

    mvn archetype:generate -Dappengine-version=1.9.59 -Dapplication-id=[YOUR-PROJECT-ID] -Dfilter=com.google.appengine.archetypes:
    

    -Dappengine-version 設定為 Java 適用的 App Engine SDK 的最新版本,並將 application-id 設定為 GCP 專案的 ID。

  3. 如要建立空白專案,其中包含所需目錄結構和適用於您類別的檔案,請提供與 com.google.appengine.archetypes:appengine-skeleton-archetype 對應的編號。

  4. 接受預設值便可從顯示的可用原型版本清單中選取最新版本。

  5. 系統提示您 Define value for property 'groupId' 時,請為您的應用程式提供所需命名空間,例如 com.mycompany.myapp

  6. 系統提示您 Define value for property 'artifactId' 時,請提供專案名稱,例如 myapp

  7. 系統提示您 Define value for property 'version' 時,請接受預設值。

  8. 系統提示您 Define value for property 'package' 時,請提供您的偏好套件名稱 (或接受預設值)。產生的 Java 檔案會使用您在這裡指定的套件名稱。

  9. 系統提示您確認選擇時,請接受預設值 (Y)。

  10. 等待專案產生完畢。然後將目錄變更為新的專案目錄,例如 myapp/

  11. 透過叫用來建構專案

        mvn clean package
    
  12. 等待專案建構完成。專案成功完成時,您將會看到類似以下內容的訊息:

        [INFO] --------------------------------------------------
        [INFO] BUILD SUCCESS
        [INFO] --------------------------------------------------
        [INFO] Total time: 1:16.656s
        [INFO] Finished at: 2016-08-04T16:18:24-07:00
        [INFO] Final Memory: 16M/228M
        [INFO] --------------------------------------------------
    
  13. 如果您使用 appengine-skeleton-archetype 成果建立新的、空白應用程式:

    1. 開始為自己的應用程式類別編寫程式碼前,請先熟悉基本專案配置及必要的專案檔案:在您建立專案所在的目錄中會有一個名為 myapp 的子目錄,其中包含 pom.xml 檔案、src/main/java 子目錄與 src/main/webapp/WEB-INF 子目錄:

      Maven 專案配置

      • 將您自己的應用程式 Java 類別新增至 src/main/java/...
      • 使用 src/main/webapp/WEB-INF/appengine-web.xml 檔案設定應用程式
      • 使用 src/main/webapp/WEB-INF/web.xml 檔案設定應用程式部署
    2. 建立應用程式 Java 類別並將這些類別新增至 src/main/java/... 詳情請參閱入門指南

    3. 新增您要提供給應用程式使用者的 UI。詳情請參閱新增應用程式程式碼與 UI

    4. 您用來建立專案的成果已為您完成基本 src/main/webapp/WEB-INF/appengine-web.xml 設定。但是,如要進行更進一步的設定,可能需要編輯這個檔案。詳情請參閱使用 appengine-web.xml 設定

    5. 編輯 src/main/webapp/WEB-INF/web.xml 檔案,將網址對應至您的應用程式處理常式、指定驗證、篩選器等。這會在部署作業描述元中詳細說明。

管理、測試和部署 Maven 專案

編譯和建構專案

如何建構使用 Maven App Engine 原型建立的應用程式:

  1. 變更至專案的主目錄。

  2. 叫用 Maven:

    mvn clean package
    
  3. 等待專案建構完成。專案成功完成時,您將會看到類似以下內容的訊息:

    BUILD SUCCESS
     Total time: 10.724s
     Finished at: 2016-08-04T16:18:24-07:00
     Final Memory: 24M/213M
    
  4. 您也可以選擇使用以下程序來測試應用程式。

使用開發伺服器測試您的應用程式

在開發階段,您可以透過叫用 App Engine Maven 外掛程式,隨時在開發伺服器中執行和測試您的應用程式。

如要測試您的 App Engine 應用程式:

  1. 如果您尚未這樣做,請建構您的應用程式:

    mvn clean package
    
  2. 將目錄變更至專案的頂層目錄 (例如 myapp),並叫用 Maven:

    mvn appengine:run
    

    等待伺服器啟動。當伺服器完全啟動,且執行您的應用程式時,您將會看到類似以下內容的訊息:

    [INFO] GCLOUD: INFO: Module instance default is running at http://localhost:44180/
    [INFO] GCLOUD: Jul 29, 2016 9:23:55 PM com.google.appengine.tools.development.AbstractModule startup
    [INFO] GCLOUD: INFO: The admin console is running at http://localhost:44180/_ah/admin
    [INFO] GCLOUD: Jul 29, 2016 9:23:55 PM com.google.appengine.tools.development.devappserver2.DevAppServer2Impl doStart
    [INFO] GCLOUD: INFO: Dev App Server is now running
    
  3. 使用瀏覽器造訪 http://localhost:8080/ 以存取應用程式。

  4. 按下 Control-C 鍵以關閉應用程式和開發伺服器。

指定用於本機測試的通訊埠

在本機開發伺服器中執行您的應用程式時,預設通訊埠為 8080。您可以透過修改 appengine-maven-plugin 的外掛程式項目來變更此預設值。例如,您可以在應用程式目錄的 pom.xml 檔案中指定通訊埠和位址:

<plugins>
   <plugin>
     <groupId>com.google.cloud.tools</groupId>
     <artifactId>appengine-maven-plugin</artifactId>
     <version>2.0.0</version>
     <configuration>
       <devserver.host>0.0.0.0</devserver.host>
       <devserver.port>8181</devserver.port>
     </configuration>
  </plugin>
</plugins>

在此範例中,<devserver.port> 會將通訊埠設定為 8181 而非預設值,並指定 0.0.0.0 位址,這代表開發伺服器將會接聽來自本機網路的要求。

前置字串 devserver 為選用項目,您可以改用 <port>8181</port>

在開發伺服器上偵錯

如要對在本機上執行的應用程式進行偵錯,請在外掛程式設定中設定 jvmFlags,以在基礎 JVM 上啟用偵錯功能,例如:

<configuration>
  <jvmFlags>
    <jvmFlag>-Xdebug</jvmFlag>
    <jvmFlag>-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</jvmFlag>
  </jvmFlags>
</configuration>

部署應用程式

如何部署您的應用程式:

mvn appengine:deploy

appengine:deploy 目標和 App Engine Maven 外掛程式中的所有其他目標都具有您可以使用的關聯參數。如需目標和參數的完整清單,請參閱 App Engine Maven 外掛程式的目標和參數

後續步驟

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

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

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