Gradle 및 App Engine 플러그인 사용

Gradle은 유연성과 성능에 중점을 둔 오픈소스 빌드 자동화 도구입니다. App Engine은 앱을 빌드하고 App Engine에 배포하는 데 사용할 수 있는 Gradle 플러그인을 제공합니다.

시작하기 전에

  1. 자바 설치

  2. Gradle(v3.4.1 이상) 설치

  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-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 태스크 및 속성을 참조하세요.

다음 단계