このページでは、Apache Maven を使用して Cloud Endpoints Frameworks API の App Engine プロジェクトを管理する方法について説明します。Apache Maven は、ソフトウェア プロジェクトの管理と確認を行うツールで、App Engine にデプロイするウェブ アプリケーション アーカイブ(WAR)ファイルをビルドできます。Google では、Maven 3.3.9 以上でサポートされる、プラグインと Maven アーキタイプを提供しています。
Maven は App Engine SDK から Java ライブラリをダウンロードします。Maven を使用してアプリをローカルでテストし、App Engine にデプロイできます。
始める前に
- Google Cloud コンソールを使用して、Google Cloud プロジェクトを作成し、設定します。
- Google Cloud プロジェクトを選択するか、新規作成します。
- プロジェクト用の App Engine アプリケーションを作成する必要がある場合は、指示に従い、App Engine アプリケーションを配置するリージョンを選択します。
- gcloud CLI をダウンロードしてインストールしてから、Google Cloud CLI を初期化します。
Google Cloud CLI をすでにインストールしていて、初期化時とは異なる Google Cloud プロジェクト ID を使用するように設定する場合は、gcloud CLI 構成の管理をご覧ください。
- gcloud CLI
app-engine-java
コンポーネントをインストールします。gcloud components install app-engine-java
注: gcloud CLI for Java の最新バージョンを使用できるようにするには、
gcloud components update
を実行してください。 - Java がない場合は、Java をダウンロードし、インストールして構成します。
- プロジェクトの
pom.xml
で Java コンパイラ フラグを設定して、Java 8 バイトコードを指定します。 - Apache Maven 3.3.9 以降がインストールされている必要があります。
Maven のバージョンを確認するには、次のコマンドを実行します。
mvn -v
- 適切なバージョンの Maven がインストールされていない場合は、次の手順に従ってインストールします。
App Engine Maven プラグインを既存のプロジェクトに追加する(省略可)
App Engine Maven プラグインを既存の Maven プロジェクトで使用するには、プロジェクトの pom.xml
ファイル内の plugins
セクションに次の内容を追加します。
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.7.0</version>
</plugin>
App Engine アーキタイプの選択
Maven アーキタイプを使用すると、一般的な使用事例を想定したテンプレートを使って Maven プロジェクトを作成できます。App Engine では、この Maven の機能を活用するために、便利な App Engine アーキタイプをいくつか Maven Central で提供しています。アプリに適した App Engine アーキタイプを選択してください。
アプリケーションの種類 | アーティファクト | 説明 |
---|---|---|
Endpoints Frameworks for App Engine | endpoints-skeleton-archetype |
独自のクラスとリソースを利用できる、必要なファイルとディレクトリが含まれた新しい空の Endpoints Frameworks for App Engine のバックエンド API プロジェクトを生成します。 |
Endpoints Frameworks for App Engine | hello-endpoints-archetype |
ビルドして実行することができる、スターター Endpoints Frameworks for App Engine のバックエンド API プロジェクトを生成します。 |
Maven を使用した新しいプロジェクトの作成
Maven でプロジェクトを作成する際、プロジェクトの groupId
、artifactId
、version
、package
を指定するよう求められます。
用語 | 意味 |
---|---|
groupId |
アーティファクトの追跡に使用される、Maven 内での名前空間。プロジェクトが他のユーザーの Maven プロジェクトに使用される場合、依存性を指定する際に属性として使用されます。 |
artifactId |
Maven におけるプロジェクト名。この値も、他のユーザーが自分の Maven プロジェクトをこのプロジェクトに依存させる場合に指定されます。 |
version |
プロジェクトの生成に使用する Maven の初期バージョン。version に接尾辞 -SNAPSHOT を付けることをおすすめします。これにより、開発中のバージョンを Maven Release Plugin でサポートできます。詳しくは、Maven Release Plugin の使用方法に関するガイドをご覧ください。 |
package |
生成時に作成される Java パッケージ。 |
新しい Endpoints Frameworks アプリケーションの作成
このセクションでは、新しい Endpoints Frameworks バージョン 2.0 プロジェクトの作成について説明します。
hello-endpoints-archetype
で、App Engine Maven プラグインと Endpoints Frameworks Maven プラグインなどのプラグインの使用例を確認できます。
hello-endpoints-archetype
によって、Endpoints Frameworks バージョン 2.0 を使用した Greetings API の例が生成されます。また、Endpoints Frameworks バージョン 1.0 アプリケーションを Endpoints Frameworks バージョン 2.0 に移行する例として、これを使用することもできます。
アーキタイプで生成された README.md
には、移行がどこで発生したかに関する情報が示されます。
Endpoints Frameworks for App Engine のバックエンド API アーキタイプ プロジェクトを作成するには、次の手順に沿って操作します。
プロジェクトをビルドするディレクトリに移動します。
次の Maven コマンドを実行します。
mvn archetype:generate -Dgoogle-cloud-project=[YOUR-PROJECT-ID] -Dappengine-plugin=2.7.0 -Dendpoints-frameworks=2.1.0 -Dendpoints-plugin=1.0.2 -Dappengine-sdk=1.9.98 -Dfilter=com.google.appengine.archetypes:
ここで
-Dgoogle-cloud-project
は、プロジェクト ID に設定されます。-Dappengine-plugin
は、App Engine Maven プラグインの最新バージョンに設定されます。-Dendpoints-frameworks
は、Maven 依存関係用の Endpoints Frameworks for App Engine の最新バージョンに設定されています。-Dendpoints-plugin
は、Endpoints Frameworks for App Engine Maven プラグインの最新バージョンに設定されています。
hello-endpoints-archetype
に対応する番号を指定します。表示された利用可能なアーキタイプ バージョンのリストから最新バージョンを選択します。
「
Define value for property 'groupId'
」と表示されたら、アプリの名前空間を指定します(com.example.helloendpoints
など)。「
Define value for property 'artifactId'
」と表示されたら、プロジェクト名を指定します(helloendpoints
など)。「
Define value for property 'version'
」と表示されたら、デフォルト値を受け入れます。「
Define value for property 'package'
」と表示されたら、デフォルト値を受け入れます。選択した内容を確認するよう促されたら、「
Y
」と入力してデフォルト値を受け入れます。プロジェクトの生成が完了するまで待ってから、新しいプロジェクト ディレクトリ(
helloendpoints/
など)に移動します。プロジェクトをビルドします。
mvn clean package
プロジェクトがビルドされるのを待ちます。プロジェクトが正常に終了すると、次のようなメッセージが表示されます。
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.062 s [INFO] Finished at: 2017-02-28T00:28:03-08:00 [INFO] Final Memory: 27M/485M [INFO] ------------------------------------------------------------------------
ローカルでテストし、App Engine スタンダード環境にプロジェクトをデプロイする場合は、Maven プロジェクトの管理、テスト、デプロイをご覧ください。
さらに、次のように Endpoints Frameworks Maven Plugin を使用して、Greeting API 用の Java クライアント ライブラリを生成することもできます。
mvn endpoints-framework:clientLibs
次の図は、Greetings API の基本的なプロジェクト レイアウトを示しています。
README.md
には、生成された例に関する情報が含まれています。Greetings.java
には、Greetings API の例の API 定義が含まれています。Constants.java
には、Greetings API の例で使用される定数が含まれています。HelloGreeting.java
には、Greetings API の例で送受信されるメッセージのコンテナが含まれています。index.html
には、バックエンドの Greetings API を呼び出すためのシンプルな UI が含まれています。base.js
には、UI によるバックエンド リクエストに必要な JavaScript が含まれています。build.gradle
が生成されると、この例では Gradle もサポートされるようになり、この機能に関する詳細がREADME.md
に生成されます。
アプリケーションのコンパイルとビルド
Maven App Engine アーキタイプを使用して作成したアプリケーションをビルドするには、次の手順に沿って操作します。
プロジェクトのメイン ディレクトリ(
guestbook/
など)に移動します。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 プラグインを起動することによって、開発用サーバーでいつでもアプリケーションを実行してテストできます。
Endpoints Frameworks for App Engine アプリをテストするには:
アプリをまだビルドしていない場合はビルドします。
mvn clean package
サンプルをローカルで実行します。
mvn appengine:run
サーバーが起動するまで待ちます。サーバーが完全に起動してアプリケーションが実行中になると、次のようなメッセージが表示されます。
[INFO] GCLOUD: INFO ### devappserver2.py:764] Skipping SDK update check. [INFO] GCLOUD: INFO ### api_server.py:268] Starting API server at: http://localhost:34199 [INFO] GCLOUD: INFO ### dispatcher.py:199] Starting module "default" running at: http://localhost:8080 [INFO] GCLOUD: INFO ### admin_server.py:116] Starting admin server at: http://localhost:8000 [INFO] GCLOUD: ### com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties
ブラウザで
http://localhost:8080/
に移動して、アプリにアクセスします。Control+C
キーを押して、アプリケーションと開発サーバーをシャットダウンします。
ローカルテスト用のポートを指定する
ローカルの開発用サーバーでアプリケーションを実行する場合、デフォルトのポートは 8080
です。appengine-maven-plugin
のプラグイン エントリを変更して、このデフォルト値を変更できます。たとえば、次のように、アプリケーション ディレクトリの pom.xml
ファイルでポートとアドレスを指定できます。
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.7.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 プラグインのゴールとパラメータをご覧ください。
次のステップ
- GitHub で、プラグインのコードを調べて問題を報告する。
- App Engine Maven のゴールとパラメータで、ゴールのパラメータを指定する方法を確認する。
- GitHub で Endpoints Framework Maven プラグインのコードを調べて問題を報告する。
- Cloud Endpoints Frameworks Maven プラグインで、ゴールのパラメータを指定する方法を確認する。