このページでは、ソフトウェア プロジェクトの管理および確認ツール Apache Maven を使用して App Engine プロジェクトを管理する方法を説明します。このツールを使って App Engine にデプロイするウェブ アプリケーション アーカイブ(WAR)ファイルをビルドできます。Google では、Maven 3.5 以降でサポートされる、プラグインと Maven アーキタイプを提供しています。
Maven を使用して、アプリをローカルでテストし、App Engine をデプロイできます。
始める前に
- Google Cloud Console を使用して、Cloud プロジェクトを作成、設定します。
App Engine に移動- 新しい Cloud プロジェクトを選択または作成します。
- プロジェクト用の App Engine アプリケーションを作成する必要がある場合は、指示に従い、App Engine アプリケーションを配置するリージョンを選択します。
- Java がない場合は、Java をダウンロードし、インストールして構成します。
- プロジェクトの
pom.xml
で Java コンパイラ フラグを設定して、Java 8 バイトコードを指定します。Java 8 - Maven 3.5 以降がインストールされている必要があります。Maven 3.5 以降がインストールされているかどうかを確認するには、次のコマンドを実行します。
mvn -v
- Maven 3.5 以降がインストールされていない場合:
- 次のコマンドを実行して、現在の構成で gcloud コマンドのデフォルト プロジェクトを設定します。
gcloud config set project PROJECT
ここで PROJECT はプロジェクト ID です。
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.4.3</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 でプロジェクトを作成する際、プロジェクトの groupId
、artifactId
、version
、package
を指定するよう求められます。
用語 | 意味 |
---|---|
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 アプリを作成するには:
プロジェクトをビルドするディレクトリに移動します。
次の Maven コマンドを実行します。
mvn archetype:generate -Dappengine-version=1.9.59 -Dapplication-id=[YOUR-PROJECT-ID] -Dfilter=com.google.appengine.archetypes:
-Dappengine-version
を App Engine SDK for Java の最新バージョンに設定し、application-id
を Cloud プロジェクトの ID に設定します。独自のクラスに必要なディレクトリ構造とファイルを含む空のプロジェクトを作成する場合は、
com.google.appengine.archetypes:appengine-skeleton-archetype
に対応する番号を指定します。デフォルト値を受け入れて、表示された利用可能なアーキタイプ バージョンのリストから最新バージョンを選択します。
「
Define value for property 'groupId'
」と表示されたら、アプリの名前空間を指定します(com.mycompany.myapp
など)。「
Define value for property 'artifactId'
」と表示されたら、プロジェクト名を指定します(myapp
など)。「
Define value for property 'version'
」と表示されたら、デフォルト値を受け入れます。「
Define value for property 'package'
」と表示されたら、希望するパッケージ名を指定します(またはデフォルト値を受け入れます)。生成される Java ファイルには、ここで指定するパッケージ名が付けられます。選択した内容を確認するよう促された場合、デフォルト値(
Y
)を受け入れます。プロジェクトの生成が完了するまで待ってから、新しいプロジェクト ディレクトリ(
myapp/
など)に移動します。次のコマンドを実行してプロジェクトをビルドします。
mvn clean package
プロジェクトがビルドされるまで待ちます。プロジェクトのビルドが正常に終了すると、次のようなメッセージが表示されます。
[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] --------------------------------------------------
appengine-skeleton-archetype
アーティファクトを使って新しい空のアプリを作成した場合:アプリ用のクラスのコードを作成する前に、基本的なプロジェクトのレイアウトと必要なプロジェクト ファイルが完成していることを確認します。プロジェクトを作成したディレクトリに、
myapp
というサブディレクトリがあります。これには、pom.xml
ファイル、src/main/java
サブディレクトリ、およびsrc/main/webapp/WEB-INF
サブディレクトリが含まれています。src/main/java/...
には独自のアプリケーション Java クラスを追加します。- アプリケーションの構成にはファイル
src/main/webapp/WEB-INF/appengine-web.xml
を使います。 - アプリケーション デプロイの構成にはファイル
src/main/webapp/WEB-INF/web.xml
を使います。
アプリケーションの Java クラスを作成し、
src/main/java/...
に追加します。詳しくは、スタートガイドをご覧ください。アプリのユーザーに提供する UI を追加します。詳しくは、アプリケーション コードと UI を追加するをご覧ください。
プロジェクトの作成に使用したアーティファクトでは
src/main/webapp/WEB-INF/appengine-web.xml
の基本的な構成が完了しています。ただし、詳細な構成を行うには、このファイルの編集が必要になることがあります。詳しくは、appengine-web.xml を使用して構成するをご覧ください。ファイル
src/main/webapp/WEB-INF/web.xml
を編集して、URL をアプリハンドラにマッピングし、認証やフィルタなどを指定します。詳しくはデプロイ記述子をご覧ください。
Maven プロジェクトの管理、テスト、デプロイ
プロジェクトをコンパイルしてビルドする
Maven App Engine アーキタイプを使用して作成したアプリケーションをビルドするには:
プロジェクトのメイン ディレクトリに移動します。
Maven を起動します。
mvn clean package
プロジェクトがビルドされるまで待ちます。プロジェクトのビルドが正常に終了すると、次のようなメッセージが表示されます。
BUILD SUCCESS Total time: 10.724s Finished at: 2016-08-04T16:18:24-07:00 Final Memory: 24M/213M
必要に応じて、以下の手順に従ってアプリケーションをテストします。
開発用サーバーを使用してアプリケーションをテストする
開発フェーズでは、App Engine Maven プラグインを起動することによって、開発用サーバーでいつでもアプリケーションを実行してテストできます。
App Engine アプリをテストするには:
アプリをまだビルドしていない場合はビルドします。
mvn clean package
ディレクトリをプロジェクトの最上位(
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
ブラウザで
http://localhost:8080/
にアクセスしてアプリを表示します。Ctrl+C キーを押して、アプリケーションと開発サーバーをシャットダウンします。
ローカルテスト用のポートを指定する
ローカルの開発用サーバーでアプリケーションを実行する場合、デフォルトのポートは 8080
です。appengine-maven-plugin
のプラグイン エントリを変更して、このデフォルト値を変更できます。たとえば、次のように、アプリケーション ディレクトリの pom.xml
ファイルでポートとアドレスを指定できます。
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.4.3</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 package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
PROJECT_ID は実際の Cloud プロジェクトの ID に置き換えます。pom.xml
ファイルですでにプロジェクト ID を指定している場合は、実行するコマンドに -Dapp.deploy.projectId
プロパティを含める必要はありません。
App Engine Maven プラグインの appengine:deploy
ゴールと他のすべてのゴールには、使用可能なパラメータが関連付けられています。すべてのゴールとパラメータのリストについては、App Engine Maven プラグインのゴールとパラメータをご覧ください。
次のステップ
- GitHub で、プラグインのコードを調べて問題を報告します。
- App Engine Maven のゴールとパラメータで、ゴールのパラメータを指定する方法を確認する。