使用 Gradle 和 App Engine 插件

了解如何使用 Gradle 管理 App Engine 柔性环境项目,Gradle 是一种用于自动化构建、测试和部署的声明式构建系统。

准备工作

安装并配置以下前提条件:

设置并验证 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

    如果您已安装 gcloud 工具,并且希望将其配置为使用其他 GCP 项目 ID,而不是初始化时设置的 GCP 项目 ID,请参阅管理 Cloud SDK 配置

  3. 安装 App Engine Java 组件:

    gcloud components install app-engine-java
    

创建新的 Gradle 项目

您可以使用 shell 从头开始创建新的 Gradle 项目。或者,如果要试用此插件,您还可以下载 hello world 项目,在本地运行并完成部署。

如需创建新项目,请执行以下操作:

  1. 创建一个新目录,并导航到此目录。

  2. 如需初始化一个新项目,请执行以下操作:

    1. 运行 gradle init

      gradle init --type java-library
      
    2. 创建 WEB-INF 文件夹:

      mkdir -p src/main/webapp/WEB-INF
      
    3. 创建 appengine 文件夹:

      mkdir -p src/main/appengine
      
  3. 移除 gradle init 命令生成的存根文件:

    rm src/main/java/Library.java src/test/java/LibraryTest.java
    
  4. 将以下代码添加到 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
        classpath 'org.akhikhl.gretty:gretty:+'
      }
    }
    
    repositories {   // repositories for JARs you access in your code
      maven {
        url 'https://maven-central.storage.googleapis.com'             // Google's mirror of Maven Central
      }
    
    //maven {
    //  url 'https://oss.sonatype.org/content/repositories/snapshots' // SNAPSHOT repository if needed
    //}
    
      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 {
        httpPort = 8080
        contextPath = '/'
        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/appengine/helloworld-new-plugins
    

使用开发服务器测试应用

  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 任务和属性

后续步骤