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

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

始める前に

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

GCP プロジェクトの設定と検証

次の手順に沿って GCP プロジェクトをセットアップし、Cloud SDK をインストールする必要があります。

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

    App Engine に移動

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

新しい 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:1.+'    // Latest 1.x.x release
      }
    }
    
    repositories {   // repositories for Jar's you access in your code
      maven {
        url 'https://oss.sonatype.org/content/repositories/snapshots' // SNAPSHOT repository (if needed)
      }
      mavenCentral()
      jcenter()
    }
    
    apply plugin: 'java'                              // standard Java tasks
    apply plugin: 'war'                               // standard Web Archive plugin
    apply plugin: 'com.google.cloud.tools.appengine'  // App Engine tasks
    
    dependencies {
      compile 'com.google.appengine:appengine-api-1.0-sdk:+'  // Latest App Engine Api's
      providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
    
      compile 'jstl:jstl:1.2'
    
    // Add your dependencies here.
    //  compile 'com.google.cloud:google-cloud:+'   // Latest Cloud API's http://googlecloudplatform.github.io/google-cloud-java
    
      testCompile 'junit:junit:4.12'
      testCompile 'com.google.truth:truth:0.33'
      testCompile 'org.mockito:mockito-all:1.10.19'
    
      testCompile 'com.google.appengine:appengine-testing:+'
      testCompile 'com.google.appengine:appengine-api-stubs:+'
      testCompile 'com.google.appengine:appengine-tools-sdk:+'
    }
    
    // Always run unit tests
    appengineDeploy.dependsOn test
    appengineStage.dependsOn test
    
    appengine {  // App Engine tasks configuration
      deploy {   // deploy configuration
    
      }
    }
    
    test {
      useJUnit()
      testLogging.showStandardStreams = true
      beforeTest { descriptor ->
         logger.lifecycle("test: " + descriptor + "  Running")
      }
    
      onOutput { descriptor, event ->
         logger.lifecycle("test: " + descriptor + ": " + event.message )
      }
      afterTest { descriptor, result ->
        logger.lifecycle("test: " + descriptor + ": " + result )
      }
    }
    
    group   = "com.example.appenginej8"        // Generated output GroupId
    version = "1.0-SNAPSHOT"       // Version in generated output
    
    sourceCompatibility = 1.8     // App Engine Flexible uses Java 8
    targetCompatibility = 1.8     // App Engine Flexible uses Java 8
  4. 次のファイルをプロジェクトに追加する必要があります。テキスト エディタまたは統合開発環境(IDE)を使用して追加してください。

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

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

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

    git clone https://github.com/GoogleCloudPlatform/getting-started-java.git
    

    あるいは、zip 形式のサンプルをダウンロードして、ファイルを抽出することもできます。

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

    cd getting-started-java-master/appengine-standard-java8/helloworld
    

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

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

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

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

    gradle appengineRun
    

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

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

    :compileJava
    :processResources NO-SOURCE
    :classes
    :war
    :explodeWar
    :assemble
    :appengineRun
    2018-06-05 22:50:46.231:INFO::main: Logging initialized @321ms
    Jun 06, 2018 2:50:49 AM com.google.appengine.tools.development.AbstractModule startup
    INFO: Module instance default is running at http://localhost:8080/
    Jun 06, 2018 2:50:49 AM com.google.appengine.tools.development.AbstractModule startup
    INFO: The admin console is running at http://localhost:8080/_ah/admin
    Jun 05, 2018 10:50:49 PM com.google.appengine.tools.development.DevAppServerImpl doStart
    INFO: Dev App Server is now running
    
  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 {
        automaticRestart = true
      }
    }
    
  • アプリケーションの実行中に explodeWar タスクを実行し、変更内容を展開済みのアプリケーションに直接コピーして、実行中のアプリケーションに変更を反映します。

アプリケーションのデプロイ

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

gradle appengineDeploy

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

Gradle ラッパーを使用する

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

Linux / macOS

./gradlew appengineRun

Windows

gradlew.bat appengineRun

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

次のステップ

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

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

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