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

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

このコードサンプルは、App Engine Gradle タスク、Maven リポジトリ、App Engine Gradle プラグイン、Java 8 の依存関係を追加するように build.gradle ファイルを構成する方法を示しています。Java バージョン 11 以降の場合は、Java ランタイムで新しいバージョンの使用についての詳細をご覧ください。

始める前に

  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 のタスクとプロパティをご覧ください。

次のステップ