Apache Maven と App Engine プラグインの使用(Cloud SDK ベース)

このページでは、ソフトウェア プロジェクトの管理および確認ツール Apache Maven を使用して App Engine プロジェクトを管理する方法を説明します。このツールを使って App Engine にデプロイするウェブ アプリケーション アーカイブ(WAR)ファイルをビルドできます。Google では、Maven 3.5 以上でサポートされる、プラグインと Maven アーキタイプを提供しています。

Maven は Google App Engine SDK から Java ライブラリをダウンロードします。Maven を使用してアプリをローカルでテストし、App Engine にデプロイできます。

始める前に

  1. Google Cloud Platform コンソールを使用して、GCP プロジェクトを作成して設定します。
    App Engine に移動
    1. GCP プロジェクトを選択するか、新規に作成します。
    2. プロジェクト用の App Engine アプリケーションを作成する必要がある場合は、プロンプトに従って、App Engine アプリケーションを配置するリージョンを選択します。
  2. Google Cloud SDK をダウンロードし、インストールしてから、gcloud コマンドライン ツールを初期化します。
    SDK をダウンロード

    gcloud コマンドライン ツールがすでにインストールされている場合、初期化時に指定した ID とは異なる GCP プロジェクト ID を使用するようにツールを設定するには、Cloud SDK 構成の管理をご覧ください。

    注: オプションで、Cloud SDK 構成を作成せずにユーザー アカウントを認証するには gcloud auth application-default login を実行します。サービス アカウントを使用する場合は、gcloud auth activate-service-account --key-file=your_key.json を実行することもできます。詳細については、Cloud SDK ツールの承認をご覧ください。

  3. Cloud SDK app-engine-java コンポーネントをインストールします。
    gcloud components install app-engine-java

    注: 定期的に gcloud components update を実行して、最新バージョンの Cloud SDK for Java を使用するようにしてください。

  4. Java がインストールされていない場合は、Java をダウンロードし、インストールして構成します。
  5. プロジェクトの pom.xml で Java コンパイラ フラグを設定して、Java 7 バイトコードまたは Java 8 バイトコードを指定します。設定については、以下の該当するタブを参照してください。App Engine Java 7 ランタイムには Java 7 バイトコードが必要です。
    Java 8
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    Java 7
    <properties>
      <maven.compiler.target>1.7</maven.compiler.target>
      <maven.compiler.source>1.7</maven.compiler.source>
    </properties>
  6. Maven 3.5 がインストールされている必要があります。Maven 3.5 がインストールされているかどうかを確認するには、次のコマンドを実行します。
     mvn -v
  7. 適切なバージョンの Maven がインストールされていない場合は、次の手順に従ってインストールします。
    1. Maven ウェブサイトから Maven 3.5 をダウンロードします
    2. ローカルマシンに Maven 3.5 をインストールします。

      注: Linux ユーザーが Maven 3.5 をインストールするには、apt-get install を使用するのではなく、Maven をダウンロードしなければならない場合があります。

App Engine Maven プラグインを既存のプロジェクトに追加する(省略可)

Google App Engine Maven プラグインを既存の 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 アーキタイプを使用すると、一般的な使用事例を想定したテンプレートを使って Maven プロジェクトを作成できます。App Engine では、この Maven の機能を活用するために、便利な App Engine アーキタイプをいくつか Maven Central で提供しています。アプリに適した 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 プロジェクトに使用される場合、依存性を指定する際に属性として使用されます。
artifactId Maven 内でのプロジェクト名。他のユーザーが自分の Maven プロジェクトでこのプロジェクトに依存する場合も、このプロジェクト名が指定されます。
version プロジェクトの生成に使用する Maven の初期バージョン。version に接尾辞 -SNAPSHOT を付けることをおすすめします。これにより、開発中のバージョンを Maven Release Plugin でサポートできます。詳しくは、Maven Release Plugin の使用方法に関するガイドをご覧ください。
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:
    
    Set `-Dappengine-version` to the most recent version of the App
    Engine SDK for Java, and `application-id` to the ID of your
    GCP project.
    
  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 プロジェクトのレイアウト

      • src/main/java/... にはアプリケーションの 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 を編集して URL をアプリのハンドラにマッピングし、認証やフィルタなどを指定します。詳しくは、デプロイ記述子をご覧ください。

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. Ctrl+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

App Engine Maven プラグインの appengine:deploy ゴールと他のすべてのゴールには、使用可能なパラメータが関連付けられています。すべてのゴールとパラメータのリストについては、App Engine Maven プラグインのゴールとパラメータをご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Java の App Engine スタンダード環境