使用 Gradle 和 App Engine 插件

Gradle 是一种侧重于灵活性和性能的开源构建自动化工具。 App Engine 提供了一个 Gradle 插件,您可以使用该插件构建应用并将其部署到 App Engine。

此代码示例演示了如何配置 build.gradle 文件以添加 App Engine Gradle 任务、Maven 制品库、App Engine Gradle 插件和 Java 8 依赖项。对于 Java 11 版及更高版本,请参阅 Java 运行时,详细了解如何使用新版本。

准备工作

  1. 安装 Java

  2. 安装 Gradle(3.4.1 或更高版本)

  3. 安装 git

  4. 请按照本指南中的步骤下载 gcloud CLI,创建 Google Cloud 项目并初始化 App Engine 应用(如果您尚未执行这些操作)。

  5. 安装 gcloud CLI 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: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 任务和属性

后续步骤