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

Gradle は、柔軟性とパフォーマンスに重点を置いたオープンソースのビルド自動化ツールです。App Engine には、アプリをビルドして App Engine にデプロイする際に使用できる Gradle プラグインが用意されています。このガイドのコードサンプルでは、Gradle バージョン 8 を使用します。

始める前に

  1. Java をインストールします

  2. Gradle をインストールします

  3. Git をインストールします

  4. まだ行っていない場合は、このガイドの手順に沿って gcloud CLI をダウンロードし、Google Cloud プロジェクトを作成して App Engine アプリを初期化します。

  5. gcloud CLI app-engine-java コンポーネントをインストールします。

    gcloud components install app-engine-java
    

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

シェルを使用して、新しい Gradle プロジェクトを一から作成できます。または、プラグインを試してみるため、Hello World プロジェクトをダウンロードし、ローカルで実行してデプロイすることもできます。

新しいプロジェクトを作成するには:

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

  2. 新しいプロジェクトを初期化するには:

    1. gradle init を実行します。

      gradle init --type java-application
      

      以下の質問に回答してください。

      • ターゲット Java バージョンを入力します(最小: 7、デフォルト: 21): 21
      • アプリケーション構造を選択: 1(単一アプリケーション プロジェクトの場合)
      • ビルド スクリプト DSL を選択: 2(Groovy の場合)
      • テスト フレームワークを選択: 1(JUnit 4 の場合)
      • 新しい API と動作を使用してビルドを生成: いいえ
    2. WEB-INF フォルダを作成します。

      mkdir -p app/src/main/webapp/WEB-INF
      
    3. appengine フォルダを作成します。

      mkdir -p app/src/main/appengine
      
  3. gradle init によって生成されたスタブファイルを削除します。

    rm ./app/src/main/java/org/example/App.java ./app/src/test/java/org/example/AppTest.java
    
  4. 次のコードを app/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:2.5.0'
        classpath 'org.akhikhl.gretty:gretty:+'
      }
    }
    
    repositories {   // repositories for Jar's you access in your code
      jcenter()
      mavenCentral()
    }
    
    apply plugin: 'java'
    apply plugin: 'war'
    apply plugin: 'org.akhikhl.gretty'
    apply plugin: 'com.google.cloud.tools.appengine'
    
    dependencies {
      providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
      providedCompile 'com.google.appengine:appengine:+'
    // Add your dependencies here.
    
    }
    
    gretty {
        servletContainer = 'jetty9'  // What App Engine Flexible uses
    }
    
      appengine {
        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.8
    targetCompatibility = 1.8
  5. 次のファイルをプロジェクトに追加する必要があります。テキスト エディタまたは統合開発環境(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/flexible/java-8/helloworld
    

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

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

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

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

    gradle jettyRun
    

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

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

    :prepareInplaceWebAppFolder
    :createInplaceWebAppFolder
    :compileJava
    :processResources UP-TO-DATE
    :classes
    :prepareInplaceWebAppClasses
    :prepareInplaceWebApp
    :jettyRun
    17:40:05 INFO  Jetty 9.2.15.v20160210 started and listening on port 8080
    17:40:05 INFO   runs at:
    17:40:05 INFO    http://localhost:8080/
    
  5. アプリが http://localhost:8080 で実行されていることを確認します。

Gretty プラグインの詳細については、Gretty の構成Gretty のタスクをご覧ください。

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

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

gradle appengineDeploy

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

Gradle ラッパーを使用する

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

Linux / macOS

  1. サンプルコードのディレクトリに移動します。

  2. gradlew を実行します。

    ./gradlew jettyRun
    

Windows

  1. サンプルコードのディレクトリに移動します。

  2. gradlew を実行します。

    ./gradlew.bat jettyRun
    

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

次のステップ