App Engine Maven 플러그인(Cloud SDK 기반) 목표 및 매개변수

프로젝트에 Cloud SDK 기반 App Engine Maven 플러그인을 추가하면 다음 App Engine 관련 Maven 목표를 사용할 수 있습니다.

목표 설명
appengine:cloudSdkLogin 계정에 전역 Cloud SDK 상태를 설정합니다.
appengine:deploy 애플리케이션을 스테이징하고 App Engine에 배포합니다.
appengine:deployAll 유효한 모든 yaml 구성을 App Engine에 동시에 스테이징하고 배포합니다.
appengine:deployCron cron.yaml 구성 파일을 스테이징하고 App Engine에 배포합니다.
appengine:deployDispatch dispatch.yaml 구성 파일을 스테이징하고 App Engine에 배포합니다.
appengine:deployDos dos.yaml 구성 파일을 스테이징하고 App Engine에 배포합니다.
appengine:deployIndex index.yaml 구성 파일을 스테이징하고 App Engine에 배포합니다.
appengine:deployQueue queue.yaml 구성 파일을 스테이징하고 App Engine에 배포합니다.
appengine:help App Engine Maven 플러그인에 대한 도움말 정보를 표시합니다.
appengine:run App Engine 개발 서버를 실행합니다. 서버를 실행하는 동안 appengine-web.xml이 변경되었는지 지속적으로 확인합니다. 변경되면 서버가 애플리케이션을 다시 로드합니다. appengine-web.xml 변경으로 인해 애플리케이션을 중지했다가 다시 시작할 필요는 없습니다.
appengine:stage 배포용 애플리케이션 디렉터리를 생성합니다.
appengine:start App Engine 개발 서버의 실행을 비동기적으로 시작한 후 명령줄로 돌아갑니다. 이 목표가 실행될 경우 동작은 Maven이 목표를 계속 처리하고 서버가 가동 및 실행된 후 종료된다는 점을 제외하고 run 목표와 동일합니다.
appengine:stop 실행 중인 App Engine 웹 개발 서버를 중지합니다.

Maven 설정 및 사용 방법에 대한 자세한 내용은 Maven 사용을 참조하세요.

자바용 App Engine SDK를 기반으로 하는 Maven 플러그인 버전 사용자는 관련 참조 문서에서 이전 플러그인 목표의 gcloud 명령어 매핑을 확인할 수 있습니다.

목표 매개변수

각 목표에는 사용할 수 있는 연결된 매개변수가 있습니다. pom.xml 또는 명령줄에서 이러한 설정을 지정할 수 있습니다.

pom.xml에서 이러한 설정을 구성하려면 <configuration> 섹션에 매개변수 이름을 추가합니다.

다음 예에서는 JAR 파일을 분할하고 이전 실행 버전을 중지하며 Cloud SDK 경로를 지정합니다.

<plugins>
   <plugin>
     <groupId>com.google.cloud.tools</groupId>
     <artifactId>appengine-maven-plugin</artifactId>
     <version>2.2.0</version>
     <configuration>
       <stage.enableJarSplitting>true</stage.enableJarSplitting>
       <deploy.stopPreviousVersion>true</deploy.stopPreviousVersion>
       <cloudSdkPath>/usr/foo/path/to/cloudsdk</cloudSdkPath>
     </configuration>
  </plugin>
</plugins>

또는 패턴 -D[USER_PROPERTY]=[PARAMETER_VALUE]에 따라 명령줄에서 이러한 설정을 구성할 수 있습니다.

다음 예에서는 애플리케이션을 스테이징할 디렉토리를 지정합니다.

mvn appengine:stage -Dapp.stage.stagingDirectory=[YOUR_STAGING_DIRECTORY]

각 목표에서 사용할 수 있는 매개변수 목록은 다음 섹션을 참조하세요.

모든 appengine:goal 실행을 건너뛰려면 skip 매개변수를 true로 설정합니다.

appengine:deploy

애플리케이션을 스테이징하고 App Engine에 배포합니다.

다음 매개변수를 사용할 수 있습니다. 일부 매개변수는 gcloud app deploy 명령줄 플래그에 해당합니다.

매개변수 설명 플러그인 구성 명령줄 구성
appEngineDirectory 구성별 배포(appengineDeployCron 등)를 배포하는 .yaml 구성 파일(크론, 색인 등) 위치입니다. 표준 애플리케이션의 경우 .xml 구성 파일은 스테이징 중에 .yaml로 변환되며 target/appengine-staging/WEB-INF/appengine-generated에 배치됩니다. deploy.appEngineDirectory app.deploy.appEngineDirectory
bucket 배포와 연결된 파일을 스테이징하는 데 사용되는 Google Cloud Storage 버킷. 이 인수가 지정되지 않으면 애플리케이션의 기본 버킷이 사용됩니다. deploy.bucket app.deploy.bucket
cloudSdkHome Cloud SDK 위치를 구성하는 선택적 매개변수입니다. 이 속성을 지정하지 않으면 플러그인이 자동으로 Cloud SDK를 다운로드합니다. cloudSdkHome cloudSdkHome
cloudSdkVersion 원하는 Cloud SDK 버전을 지정하는 선택적 매개변수입니다. cloudSdkVersion cloudSdkVersion
compileEncoding JSP를 컴파일할 때 사용할 문자 인코딩입니다. App Engine 표준 환경에만 적용됩니다. stage.compileEncoding app.stage.compileEncoding
deleteJsps 컴파일 후 JSP 소스 파일을 삭제합니다. App Engine 표준 환경에만 적용됩니다. stage.deleteJsps app.stage.deleteJsps
disableJarJsps JSP에서 생성된 클래스 추가를 사용 중지합니다. App Engine 표준 환경에만 적용됩니다. stage.disableJarJsps app.stage.disableJarJsps
dockerBuild 호스팅(remote)된 또는 로컬(local) Docker 빌드를 수행합니다. 로컬 빌드를 수행하려면 로컬 Docker 환경이 올바르게 구성되어 있어야 합니다. 기본값은 호스팅된 빌드입니다. deploy.dockerBuild app.deploy.dockerBuild
dockerfile 가변형 환경에서 실행되는 App Engine 표준 애플리케이션에 사용하는 Dockerfile의 위치입니다. App Engine 표준 환경에만 적용됩니다. stage.dockerfile app.stage.dockerfile
enableJarClasses WEB-INF/classes 콘텐츠를 Jar로 만듭니다. App Engine 표준 환경에만 적용됩니다. stage.enableJarClasses app.stage.enableJarClasses
enableJarSplitting 10MB를 초과하는 JAR 파일을 작은 조각으로 분할합니다. App Engine 표준 환경에만 적용됩니다. stage.enableJarSplitting app.stage.enableJarSplitting
enableQuickstart Jetty 퀵스타트를 사용하여 서블릿 주석을 처리합니다. App Engine 표준 환경에만 적용됩니다. stage.enableQuickstart app.stage.enableQuickstart
force 배포를 강제하여 진행 중인 이전의 모든 배포를 이 버전으로 재정의합니다. deploy.force app.deploy.force
imageUrl 특정 Docker 이미지를 사용하여 배포합니다. Docker URL은 유효한 Google Container Registry 호스트 이름 중 하나여야 합니다. deploy.imageUrl app.deploy.imageUrl
jarSplittingExcludes 모든 JAR 파일에서 쉼표로 구분된 접미사 목록과 일치하는 파일을 제외합니다. App Engine 표준 환경에만 적용됩니다. stage.jarSplittingExcludes app.stage.jarSplittingExcludes
projectId 이 호출에 사용할 Google Cloud Platform 프로젝트 이름. projectId를 지정하거나 GCLOUD_CONFIG를 설정하여 gcloud 구성 상태로 설정된 프로젝트를 사용할 수 있습니다. deploy.projectId app.deploy.projectId
promote 배포된 버전을 승격하여 모든 트래픽을 수신합니다. 기본값은 True입니다. deploy.promote app.deploy.promote
server 연결할 App Engine 서버. 일반적으로 이 값을 변경할 필요가 없습니다. deploy.server app.deploy.server
sourceDirectory 필수. 컴파일된 웹 애플리케이션 파일 또는 해체된 WAR의 위치입니다. 스테이징 소스로 사용됩니다. App Engine 표준 환경에만 적용됩니다. 기본값은 ${project.build.directory}/${project.build.finalName}입니다. stage.sourceDirectory app.stage.sourceDirectory
stagingDirectory 필수. 애플리케이션을 스테이징할 디렉터리로, 기본값은 ${project.build.directory}/appengine-staging입니다. stage.stagingDirectory app.stage.stagingDirectory
stopPreviousVersion 모든 트래픽을 수신하는 새 버전을 배포할 때 이전에 실행 중인 버전을 중지합니다. deploy.stopPreviousVersion app.deploy.stopPreviousVersion
version 이 배포에서 만들어지거나 대체되는 앱의 버전입니다. 버전을 지정하지 않는 경우 자동으로 생성됩니다. deploy.version app.deploy.version

appengine:help

App Engine Maven 플러그인에 대한 도움말 정보를 표시합니다.

매개변수 세부정보를 표시하려면 다음을 호출하세요.

mvn appengine:help -Ddetail=true -Dgoal=[GOAL_NAME]

다음 매개변수를 사용할 수 있습니다.

매개변수 설명 사용자 속성
detail true인 경우 각 목표에 설정할 수 있는 모든 속성을 표시합니다. 기본값은 False입니다. detail
goal 도움말을 표시하는 목표의 이름입니다. 지정하지 않으면 모든 목표가 표시됩니다. goal
indentSize 들여쓰기 수준당 공백 수입니다. 양수여야 합니다. 기본값은 2입니다. indentSize
lineLength 표시줄의 최대 길이입니다. 양수여야 합니다. 기본값은 80입니다. lineLength

appengine:run

App Engine 개발용 웹 서버를 실행합니다. 서버를 실행하는 동안 appengine-web.xml이 변경되었는지 지속적으로 확인합니다. 변경된 경우 서버가 애플리케이션을 새로 고칩니다. 즉, appengine-web.xml의 변경을 이유로 애플리케이션을 중지했다가 다시 시작할 필요가 없습니다.

다음 매개변수를 사용할 수 있습니다. 일부 매개변수는 로컬 개발 서버 명령줄 플래그에 대응합니다.

속성 설명 플러그인 구성 명령줄 구성
environment 로컬 개발 서버로 보내기 위한 환경 변수 맵. 예:

<environment>
  <key1>value1</key1>
  <key2>value2</key2>
</environment>
      
devserver.environment app.devserver.environment
jvmFlags 앱의 인스턴스를 시작할 때 자바 명령어에 전달할 추가 인수입니다. 두 번 이상 지정할 수 있습니다. 예:

<jvmFlags>
  <jvmFlag>-Xmx1024m</jvmFlag>
  <jvmFlag>-Xms256m</jvmFlag>
</jvmFlags>
      
devserver.jvmFlags app.devserver.jvmFlags
host 애플리케이션 서비스를 결합해야 하는 호스트 이름. 기본값은 localhost입니다. devserver.host app.devserver.host
port 애플리케이션 서비스를 결합해야 하는 가장 낮은 포트입니다. 기본값은 8080입니다. devserver.port app.devserver.port
serverVersion 시작할 서버 버전. 옵션은 '1'과 '2-alpha'입니다. 기본값은 '1'입니다. devserver.serverVersion app.devserver.serverVersion
services 필수. WEB-INF/web.xml이 포함된 디렉터리가 있는 디렉터리의 경로이며 기본값은 build/exploded-app입니다. devserver.services app.devserver.services

appengine:stage

배포용 애플리케이션 디렉터리를 생성합니다.

다음 매개변수를 사용할 수 있습니다.

매개변수 설명 플러그인 구성 명령줄 구성
cloudSdkHome Cloud SDK 위치를 구성하는 선택적 매개변수입니다. 이 속성을 지정하지 않으면 플러그인이 자동으로 Cloud SDK를 다운로드합니다. cloudSdkHome cloudSdkHome
cloudSdkVersion 원하는 Cloud SDK 버전을 지정하는 선택적 매개변수입니다. cloudSdkVersion cloudSdkVersion
compileEncoding JSP를 컴파일할 때 사용할 문자 인코딩입니다. App Engine 표준 환경에만 적용됩니다. stage.compileEncoding app.stage.compileEncoding
deleteJsps 컴파일 후 JSP 소스 파일을 삭제합니다. App Engine 표준 환경에만 적용됩니다. stage.deleteJsps app.stage.deleteJsps
dockerfile 가변형 환경에서 실행되는 App Engine 표준 애플리케이션에 사용할 Dockerfile의 위치입니다. App Engine 표준 환경에만 적용됩니다. stage.dockerfile app.stage.dockerfile
enableJarClasses WEB-INF/classes 콘텐츠를 Jar로 만듭니다. App Engine 표준 환경에만 적용됩니다. stage.enableJarClasses app.stage.enableJarClasses
enableJarSplitting 10MB를 초과하는 JAR 파일을 작은 조각으로 분할합니다. App Engine 표준 환경에만 적용됩니다. stage.enableJarSplitting app.stage.enableJarSplitting
enableQuickstart Jetty 퀵스타트를 사용하여 서블릿 주석을 처리합니다. App Engine 표준 환경에만 적용됩니다. stage.enableQuickstart app.stage.enableQuickstart
jarSplittingExcludes 모든 JAR 파일에서 쉼표로 구분된 접미사 목록과 일치하는 파일을 제외합니다. App Engine 표준 환경에만 적용됩니다. stage.jarSplittingExcludes app.stage.jarSplittingExcludes
sourceDirectory 필수. 컴파일된 웹 애플리케이션 파일 또는 해체된 WAR의 위치입니다. 스테이징 소스로 사용됩니다. App Engine 표준 환경에만 적용됩니다. 기본값은 ${project.build.directory}/${project.build.finalName}입니다. stage.sourceDirectory app.stage.sourceDirectory
stagingDirectory 필수. 애플리케이션을 스테이징할 디렉터리로, 기본값은 ${project.build.directory}/appengine-staging입니다. stage.stagingDirectory app.stage.stagingDirectory

appengine:start

App Engine 개발용 웹 서버를 비동기적으로 실행한 후 명령줄로 돌아갑니다. 이 목표가 실행될 경우 동작은 Maven이 목표를 계속 처리하고 서버가 가동 및 실행된 후 종료된다는 점을 제외하고 run 목표와 동일합니다.

다음 매개변수를 사용할 수 있습니다.

속성 설명 플러그인 구성 명령줄 구성
environment 로컬 개발 서버로 보내기 위한 환경 변수 맵. 예:

<environment>
  <key1>value1</key1>
  <key2>value2</key2>
</environment>
      
devserver.environment app.devserver.environment
jvmFlags 앱의 인스턴스를 시작할 때 자바 명령어에 전달할 추가 인수입니다. 두 번 이상 지정할 수 있습니다. 예:

<jvmFlags>
  <jvmFlag>-Xmx1024m</jvmFlag>
  <jvmFlag>-Xms256m</jvmFlag>
</jvmFlags>
      
devserver.jvmFlags app.devserver.jvmFlags
host 애플리케이션 서비스를 결합해야 하는 호스트 이름. 기본값은 localhost입니다. devserver.host app.devserver.host
port 애플리케이션 서비스를 결합해야 하는 가장 낮은 포트입니다. 기본값은 8080입니다. devserver.port app.devserver.port
serverVersion 시작할 서버 버전. 옵션은 '1'과 '2-alpha'입니다. 기본값은 '1'입니다. devserver.serverVersion app.devserver.serverVersion
services 필수. WEB-INF/web.xml이 포함된 디렉터리가 있는 디렉터리의 경로이며 기본값은 build/exploded-app입니다. devserver.services app.devserver.services
startSuccessTimeout appengineStart 사용 시 백그라운드에서 개발용 앱 서버 시작을 기다릴 시간(초)입니다. devserver.startSuccessTimeout app.devserver.startSuccessTimeout

appengine:stop

실행 중인 App Engine 웹 개발 서버를 중지합니다.

다음 매개변수를 사용할 수 있습니다.

매개변수 설명 플러그인 구성 명령줄 구성
host 관리 서버를 결합해야 하는 호스트 이름. 기본값은 localhost입니다. devserver.adminHost app.devserver.adminHost
port 관리 서버를 결합해야 하는 포트. 기본값은 8000입니다. devserver.adminPort app.devserver.adminPort
cloudSdkHome Cloud SDK 위치를 구성하는 선택적 매개변수입니다. 이 속성을 지정하지 않으면 플러그인이 자동으로 Cloud SDK를 다운로드합니다. cloudSdkHome cloudSdkHome

업로드 오류 문제 해결

deploy 목표를 사용하는 경우 404 Not Found This application does not exist (app_id=u'your-app-ID')와 유사한 메시지가 표시되며 배포 시도가 실패할 수 있습니다. 이 오류는 Google 계정이 여러 개이고 잘못된 계정을 사용하여 업데이트를 수행하면 발생합니다.

이 문제를 해결하려면 gcloud 인증 로그인으로 승인된 사용자로 변경합니다.