Gradle と App Engine プラグインを使用する

Gradle は、柔軟性に優れたビルド自動化システムです。このシステムは宣言型であり、ビルド、テスト、公開、デプロイを自動化するのに使用されます。このページでは、スタンダード環境で Gradle を App Engine プロジェクトとともに使用する方法を説明します。

始める前に

次の前提条件をインストールし、設定します。

Cloud Platform プロジェクトを設定、検証する

Cloud Platform プロジェクトを設定し、Cloud SDK をインストールする必要があります。

  1. Google Cloud Platform Console を使用して、Cloud Platform プロジェクトを作成し、設定します。

    App Engine に移動

    1. Cloud Platform プロジェクトを選択するか新規作成します。
    2. 表示される指示に沿って、App Engine アプリケーションが存在すること、および課金が有効になっていることを確認します。
      1. プロジェクト用の App Engine アプリケーションを作成する必要がある場合は、App Engine アプリケーションを配置するリージョンを選択するように指示されます。
      2. プロジェクトの課金を有効にする必要がある場合は、新しい課金アカウントを作成するか、既存のアカウントを選択するように指示されます。
    3. プロジェクトで App Engine アプリケーションが作成され、課金が有効になったら、ダッシュボードが開きます。
  2. Google Cloud SDK をインストールして初期化します。

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

  3. App Engine SDK for Java をインストールします。

    gcloud components install app-engine-java
    

新しい Gradle プロジェクトを作成する

シェルを使用して、新しい Gradle プロジェクトを一から作成することができます。別の方法でプラグインを使ってみるには、Hello World プロジェクトをダウンロードし、ローカルで実行してデプロイしてください。

  1. 新しいディレクトリを作成し、そのディレクトリに移動します。

  2. 次のコマンドを実行して新しいプロジェクトを初期化します。

    gradle init --type java-library;
    mkdir -p src/main/webapp/WEB-INF;
    rm src/main/java/Library.java src/test/java/LibraryTest.java
    
  3. 次に示すコードを build.gradle ファイルに追加します。これで、App Engine Gradle のタスク、Maven のレポジトリ、App Engine Gradle プラグイン、依存関係、タスク構成が追加されます。

    buildscript {    // Configuration for building
      repositories {
        jcenter()    // Bintray's repository - a fast Maven Central mirror & more
        mavenCentral()
      }
      dependencies {
        classpath 'com.google.cloud.tools:appengine-gradle-plugin:+'    // latest App Engine Gradle tasks
      }
    }
    
    repositories {   // repositories for Jar's you access in your code
      maven {
        url 'https://maven-central.storage.googleapis.com'             // Google's mirror of Maven Central
    //   url 'https://oss.sonatype.org/content/repositories/snapshots' // SNAPSHOT Repository (if needed)
      }
      jcenter()
      mavenCentral()
    }
    
    apply plugin: 'java'                              // standard Java tasks
    apply plugin: 'war'                               // standard Web Archive plugin
    apply plugin: 'com.google.cloud.tools.appengine'  // App Engine tasks
    
    dependencies {
      providedCompile group: 'javax.servlet', name: 'servlet-api', version:'2.5'
      compile 'com.google.appengine:appengine:+'
    // Add your dependencies here.
    
    }
    
    appengine {  // App Engine tasks configuration
      run {      // local (dev_appserver) configuration (standard environments only)
        port = 8080                 // default
      }
    
      deploy {   // deploy configuration
        stopPreviousVersion = true  // default - stop the current version
        promote = true              // default - & make this the current version
      }
    }
    
    group = 'com.example.appengine'   // Generated output GroupId
    version = '1.0-SNAPSHOT'          // Version in generated output
    
    sourceCompatibility = 1.7  // App Engine Standard uses Java 7
    targetCompatibility = 1.7  // App Engine Standard uses Java 7

  4. 次のファイルをプロジェクトに追加する必要があります。テキスト エディタまたは統合開発環境(IDE)を使用して追加してください。

Java App Engine プロジェクトの概要については、クイックスタートをご覧ください。

Hello World アプリのダウンロード

  1. Hello World サンプルアプリ レポジトリのクローンをローカルマシンに作成します。

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    

    または、zip のサンプルをダウンロードして解凍することもできます。

  2. サンプルコードが含まれているディレクトリに移動します。

    cd java-docs-samples/appengine/helloworld-new-plugins
    

開発用サーバーを使用してアプリケーションをテストする

  1. ローカルでの実行中にプロジェクトから Google リソースにアクセスするには、次のコマンドを実行してアプリケーションのデフォルトを設定します。

    gcloud auth application-default login
    
  2. アプリケーション ディレクトリのルートに移動します。

  3. 開発フェーズでは、アプリケーションをいつでも開発用サーバーで実行およびテストできます。これには、次のコマンドで Gradle を起動します。

    gradle appengineRun
    

    Gradle をインストールせずに実行することもできます。その場合は、Gradle ラッパーを使用します。

  4. サーバーが起動するまで待ちます。サーバーが起動するとアプリケーションが実行中の状態になっており、次のようなメッセージが表示されます。

    :compileJava
    :processResources UP-TO-DATE
    :classes
    :war
    :explodeWar
    :assemble
    :appengineRun
    INFO     2016-08-16 19:44:52,131 devappserver2.py:769] Skipping SDK update check.
    INFO     2016-08-16 19:44:52,174 api_server.py:205] Starting API server at: http://localhost:62837
    INFO     2016-08-16 19:44:52,176 dispatcher.py:197] Starting module "default" running at: http://127.0.0.1:8080
    INFO     2016-08-16 19:44:52,178 admin_server.py:116] Starting admin server at: http://localhost:8000
    

  5. アプリケーションは http://127.0.0.1:8080 で実行されています。

開発用サーバーでデバッグする

ローカルで実行中のアプリケーションをデバッグするには、次の例に示すように、jvmFlags プロパティを設定して、基礎となる JVM でのデバッグを有効にします。

    appengine {
      run {
        jvmFlags = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005']
      }
    }

アプリケーションのホットリロードを有効にする

ホットリロードは、環境を停止することなく、現在実行中のアプリケーション内の 1 つ以上のクラスを更新することです。ホットリロードを有効にするには、次のようにします。

  • 変更をスキャンするようローカル サーバーに指示する必要があります。

    appengine {
      run {
        jvmFlags = ["-Dappengine.fullscan.seconds=5"]
      }
    }
    
  • explodeApp を使用することによって出力ディレクトリをクリアしてから再構築することも、exploded-<project> ディレクトリを削除することなく再構築するよう新しい reloadApp タスクを設定することもできます。

    task reloadApp(type: Copy) {
      dependsOn war
    
      project.afterEvaluate {
        into project.tasks.explodeWar.explodedAppDirectory
         with war
      }
    }
    

アプリケーションの実行中に explodeApp または reloadApp を実行することによって、実行中のアプリケーションに変更を反映します。

アプリケーションをデプロイする

アプリケーションをデプロイするには、次のコマンドを実行します。

gradle appengineDeploy

appengineDeploy タスクと、Gradle のその他すべてのタスクには、デベロッパーが使用できるプロパティが関連付けられています。すべてのタスクとプロパティのリストについては、App Engine Gradle のタスクとプロパティをご覧ください。

Gradle ラッパーを使用する

Gradle には、インストールせずに、必要なバージョンの Gradle をダウンロードして実行するためのメカニズムがあります。

Mac OS X、Linux

./gradlew appengineRun

Windows

gradlew.bat appengineRun

Gradle に関するその他の情報については、App Engine Gradle のタスクとプロパティをご覧ください。

次のステップ

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

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

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