サイトのトップへ戻る

Google App Engine ドキュメント日本語訳

Apache Mavenを使用する

Apache Maven はプロジェクト管理の包括的なツールです。App Engineに配置するためのWARファイルを構築できます。 App Engineチームは開発をスピードアップさせるためにプラグインと Mavenアーキタイプを両方用意しています。



要件

マネージドVMでMavenを使用するには、以下を行う必要があります:

  1. まだインストールしていない場合は、Mavenのダウンロードとインストールをします。バージョンは 3.1 以降が必須です。

  2. あなたのPCにGoogle Cloud SDKをインストールします。 新しい Maven プラグインのゴールではビルド時にGoogle Cloud SDKを自動的にダウンロードしません App Engine Managed VMコンポーネントがインストールされた最新版(ベータ以降)をインストールするようにしてください。

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

    
    gcloud components update app-engine-java
    
    
  4. 必ず Java 7を使用してください。Java 7を持っていない場合は、 ダウンロードしてインストールしてください。 For App Engine Managed VMs images, it is possible to use Java 8 with some customization.

  5. JAVA_HOME 環境変数を設定します。あなたが bash ユーザーの場合は、以下を考慮してください:

    • 通常のLinux でのインストールの場合、.bashrcファイルに以下のような行を追加してください:

      
      export JAVA_HOME=/usr/local/tools/java/jdk1.7.0_45.jdk
      
      
  6. Mac OS X と既定のターミナルアプリを使用している場合、既定ではシェルのセッションは.bashrc を読み込みません。 そのため、.bash_profileに以下のような行を追加する必要があります:

    
        [ -r ~/.bashrc ] && source ~/.bashrc
    
    
  7. Mac OS X を使用して既定のターミナルアプリを使用していない、例えば tmuxのようなターミナルアプリを使用している場合は、 .bashrcファイルに以下のような行を追加する必要があります。:

    
        export JAVA_HOME=$(/usr/libexec/java_home -v1.7)
    
    
  8. Java Managed VM サンプルコードを使いながらチュートリアルを読み始めたい場合は、 GitHub プロジェクト: https://github.com/GoogleCloudPlatform/appengine-java-vm-guestbook-extrasを使用できます



既存のMaven プロジェクトにCloud SDK App Engine Maven プラグインを追加する

既存のMaven プロジェクトにCloud SDK App Engine Maven プラグインを追加するには、プロジェクトのpom.xmlファイルのplugins項目に以下を追加します:

<plugin>
   <groupId>com.google.appengine</groupId>
   <artifactId>gcloud-maven-plugin</artifactId>
   <version>2.0.9.72.v20150804</version>
</plugin>



Mavenを使ってプロジェクトのコンパイルとビルドを行う

pom.xmlファイルを設定したMaven を使ってJava App Engineウェブアプリケーションをビルドするには:

  1. pom.xmlファイルの directory の項目を、あなたのプロジェクトのメインディレクトリ(例えばguestbook/)に変更します

  2. 以下のように Maven を起動します:

    
    mvn clean install
    
    
  3. プロジェクトがビルドされるのを待ちます。プロジェクトのビルドが成功すると、以下のようなメッセージが表示されます:

    
    BUILD SUCCESS
     Total time: 10.724s
     Finished at: Mon Jul 14 14:50:06 PST 2014
     Final Memory: 24M/213M
    
    
  4. 次の項目で説要するように、必要に応じてCloud SDKデベロップメントサーバーを使い、ローカルでアプリケーションの実行とテストを行います。



Cloud SDK デベロップメントサーバを使ってアプリの実行とテストを行う

開発フェイズの間は、Cloud SDK App Engine Mavenプラグインを起動することで、デベロップサーバー上でいつでもアプリのテストと実行を行えます。

デベロップサーバでアプリを実行するには:

  1. まだの場合はあなたのアプリをビルドします:

    mvn clean install
    
    
  2. カレントディレクトリをあなたのプロジェクトの最上階層(例えばmyapp) へ変更してアプリを実行し、以下の用のMavenを起動してください。:

    
    $ mvn gcloud:run
    
    
  3. サーバが起動するまで待ち、ブラウザを使って http://localhost:8080/を開き、アプリにアクセスします。

  4. Windows/Linuxでは、ターミナルウィンドウ上でControl+Cキーを押して、アプリとデベロップメントサーバをシャットダウンします。 Macでは、CMD+Cキーを押します。



Cloud SDK向けApp Engine Maven プラグインのゴール

The App Engine Maven plugin goals have been extended to work with a local Cloud SDK installation that enable Managed VMs development and deployment. 以降の項目で、これらゴールの一覧を記載します。



デベロップメントサーバのゴール

以下がCloud SDK App Engine デベロップメントサーバのゴールになります:

ゴール 説明
gcloud:run Runs the Beta Cloud SDK App Engine development server for Managed VMs applications as well as non Managed VMs application.
gcloud:run_start デベロップメントサーバを非同期で実行し、コマンドラインに戻ります。 When this goal runs, the behavior is the same as the run goal except that Maven continues processing goals and exits after the server is up and running.
gcloud:stop デベロップメントサーバを停止させます。gcloud:startでデベロップメントサーバを起動した場合のみ使用できます。

Available parameters for all gcloud:* goals:

パラメータ 説明
gcloud_directory 使用する Cloud SDK の Maven内での位置。 (既定値は ~/google-cloud-sdk)

gcloud app runのコマンドラインフラグに対応した使用可能なパラメータ:

パラメータ 説明
admin_host 管理サーバを起動するためのホストとポート (host:portの形式)
allow_skipped_files Make files specified in the app.yaml "skip_files" or "static" clauses readable by the application.
api_host デベロップメントサーバ用のAPI サーバを起動するためのホストとポート (host:portの形式)。boot2dockerを使用している場合は必要ありません。
appidentity_email_address Email address associated with a service account that has a downloadable key. May be None for no local application identity.
appidentity_private_key_path サービスアカウントに関連付けられた非公開キーファイル(.pem 形式)へのパス。 appidentity_email_address が設定されている場合は必ず設定しなければなりません。
auth_domain 使用する承認ドメインの名前
blobstore_path blob のコンテンツを保存するのに使われるディレクトリへのパス(設定されていない場合は、storage_pathのサブディレクトリが既定値として設定されます)
clear_datastore 起動時にデータストアをクリアします
datastore_consistency_policy The policy to apply when deciding whether a datastore write should appear in global queries (default is "time")
datastore_path データストアのコンテンツを保存するのに使用されるファイルへのパス (設定されていない場合、storage_path内のファイルが既定値として設定されます)
default_gcs_bucket_name 既定のGoogle Cloud ストレージ バケット名
enable_sendmail Mail APIを使用してEメールを送信するための、"sendmail"ツールを使用します (ignored if smtp_host is set)
host ローカルのウェブサーバを起動するためのホストとポート(host:portの形式)
jvm_flag アプリのインスタンスを起動する時にJavaコマンドへ渡す追加の引数。複数設定することができます。例: <jvm_flag><param>-Xmx1024m</param> <param>-Xms256m</param></jvm_flag> 注意: これは Java Managed VMs アプリケーション用ではありません。その場合は Dockerfile を使用してください。
log_level ターミナルに表示されるアプリログの最小詳細度 (debug, info, warning, critical, error)。 現在の詳細度設定が既定値になります。
logs_path リクエストログを保存するのに使われるファイルへのパス (設定されていない場合、storage_path 内のファイルが既定値として設定されます)
max_module_instances 特定のモジュールのために起動することができるランタイムインスタンスの最大数 - 値は数値型になります。全てのモジュールがこのインスタンス数の制限を受けるか、もしくは module:max_instances形式のコンマ区切りで一覧を指定します。 例えば、 default:5,backend:3
php_executable_path PHP モジュールを実行するのに使用する、 PHP executableへのフルパス。
python_startup_script 新しいPythonランタイムインスタンスの起動時に実行されるスクリプト(debuggersのようにツールで便利です)
require_indexes Generate an error on datastore queries that require a composite index not found in index.yaml
show_mail_body Mail APIを使って送信されたEメールの中身をログに記録する
smtp_allow_tls SMTP サーバがTLS サポートを通知して来た場合にTLS の使用を許可する( --smtp-host が設定されていなかった場合は無視されます)
smtp_host Mail APIを使って送信されるEメールを送信するために使われるSMTPサーバのホストとポート。host:portの形式
smtp_password smtp_hostで指定したSMTPサーバへ接続する時に使用されるパスワード
smtp_user smtp_hostで指定したSMTPサーバへ接続する時に使用されるユーザー名
storage_path アプリケーションデータを保存する既定の場所。 Can be overridden for specific kinds of data using datastore_path, blobstore-path, and/or logs_path
use_mtime_file_watcher ソースコードの変更を検知するためのポーリングに使用する mtime - 分散ファイルシステムを使ってリモートマシンからコードを編集する場合に便利です
non_docker_mode ローカルの実行でDocker を使用するかしないかを制御するBoolean型の値。現在の既定値は true。
custom_entrypoint Specify an entrypoint for custom runtime modules. This is required when such modules are present. Include "{port}" in the string (without quotes) to pass the port number in as an argument. For instance: --custom_entrypoint="gunicorn -b localhost:{port} mymodule:application"

以下のこれらの設定のうちいくつかを使用する例です:

  <plugin>
    <groupId>com.google.appengine</groupId>
    <artifactId>gcloud-maven-plugin</artifactId>
    <version>>2.0.9.72.v20150804</version>
    <configuration>
      <gcloud_directory>/usr/foo/private/google-cloud-sdk</gcloud_directory>
      <verbosity>debug</verbosity>
      <version>specific_version</version>
      <set_default>true</set_default>
      <log_level>info</log_level>
      <max_module_instances>2</max_module_instances>
    </configuration>
  </plugin>



Application deployment goal

ゴールgcloud:deployを使ってApp Engineアプリケーションの配置ができます。


    $ mvn gcloud:deploy

使用可能なパラメータ。gcloud app deploy のコマンドラインフラグに対応:

パラメータ 説明
compile-encoding Java のソースファイルをコンパイルする時に使用されるエンコードを設定します (既定値は "UTF-8")
delete_jsps コンパイル後に JSP ソースファイルを削除する
disable_jar_jsps Do not jar the classes generated from JSPs
enable_jar_classes Jar the WEB-INF/classes content
enable_jar_splitting 大きな jar ファイル (32M以上) を小さく分割します
env_vars アプリの環境変数を上書きします。
force Force deploying, overriding any previous in-progress deployments to this version.
jar_splitting_excludes When enable-jar-splitting is specified and jar_splitting_excludes specifies a comma-separated list of suffixes, a file in a jar whose name ends with one of the suffixes will not be included in the split jar fragments
no_symlinks Javaアプリのアップロードで使用される一時(staging) ディレクトリを作成する時に、シンボリックリンクを使用しません。
retain_upload_dir Javaアプリのアップロードで使用される一時(staging) ディレクトリを削除しません
server 接続する App Engine サーバ。通常はこの値を変更する必要はありません。
set_default Set the deployed version to be the default serving version.
version この配置によって作成や置き換えが行われるアプリのバージョン。
gcloud_project The project-id that owns the app that is being created or replaced by this deployment.
remote リモートdocker ホストを使ってアプリの配置をする場合にこのオプションを使用します。


Application management goals

アプリケーションとプロジェクトを管理するためのゴールを以下表に一覧で記載します:

ゴール 説明
gcloud:module_cancel_deployment 現在のアプリ配置をキャンセル(ロールバック) します。何らかの理由でアプリの配置を中断したい時に便利です。
gcloud:module_delete appengine-web.xml似定義されているモジュールを削除します。
gcloud:module_set_default モジュールを既定として設定します。
gcloud:module_set_managed_by 指定されたバックエンドを設定します。
gcloud:module_start appengine-web.xmlに定義されているモジュールを起動します。
gcloud:module_stop appengine-web.xmlに定義されているモジュールを停止します。

gcloud app modules のコマンドラインフラグに対応した使用可能なパラメータ:

パラメータ 説明
server 接続する App Engine サーバ。通常はこの値を変更する必要はありません。
version この配置によって作成や置き換えが行われるアプリのバージョン。


コマンドラインのインタフェースから設定エレメントを上書きする

pom.xmlを希望する設定に編集するのではなく、mvn コマンドライン上で全ての設定パラメータを定義することもできます。 以下はシンプルな-Dgcloud.PARAM_NAME=PARAM_VALUEのパターンです。 例えば:


  # To start the development server with debug flag:
  $ mvn gcloud:run -Dgcloud.verbosity=debug
  # To start the development server listening to 0.0.0.0 so it can be accessed outside of localhost:
  $ mvn gcloud:run -Dgcloud.host=0.0.0.0:8081
  # To specify a non default Cloud SDK installation directory:
  $ mvn gcloud:run -Dgcloud.gcloud_directory=YOUR_OWN_SPECIFIC_INSTALLATION_PATH
  # To specify the project ID and version at deployment time:
  $ mvn gcloud:deploy -Dgcloud.gcloud_project=myproject -Dgcloud.version=myversion



エンタープライズアーカイブ (EAR) 形式のサポート

war 形式やear形式の App Engineプロジェクト上でCloud SDK Maven プラグインを使用することができます。



エンジェル戦記