App Engine Maven 插件目标和参数

在您的项目中添加基于 gcloud CLI 的 App Engine Maven 插件后,您就可以使用以下 App Engine 特定的 Maven 目标了:

目标 说明
appengine:cloudSdkLogin 设置账号的全局 gcloud CLI 状态。
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 开发服务器,然后返回命令行。 当此目标运行时,行为与 run 目标完全相同,但以下情况除外:Maven 继续处理目标,并在服务器启动并运行后退出。 旧版捆绑服务支持此目标。
appengine:stop 停止正在运行的 App Engine Web 开发服务器。 旧版捆绑服务支持此目标。

如需详细了解如何设置和使用 Maven,请参阅使用 Maven

使用参数

每个目标都包含您可以在 pom.xml 中指定的相关参数。例如:

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

您还可以按照 -D[USER_PROPERTY]=[PARAMETER_VALUE] 模式在命令行中定义配置参数。

例如,要指定用于暂存应用的目录,请运行以下命令:

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

如需了解每个目标可用的参数列表,请参阅以下部分。

appengine:deploy

暂存应用并将其部署到 App Engine。

您可以使用以下参数,其中一些参数对应于 gcloud app deploy 命令行标志gcloud app services 命令行标志

参数 说明 用户属性
appEngineDirectory 包含 app.yaml 和其他受支持的 App Engine 配置文件的目录。默认值为 ${basedir}/src/main/appengine app.stage.appEngineDirectory
artifact 要部署的 JAR 或 WAR 归档的位置。默认值为 ${project.build.directory}/${project.build.finalName}.${project.packaging} app.stage.artifact
bucket 用于暂存与部署关联的文件的 Cloud Storage 存储桶。如果未指定此参数,将使用应用的默认存储桶。 app.deploy.bucket
cloudSdkPath 用于配置 Google Cloud CLI 位置的可选参数。默认是从 PATH 或标准安装位置自动发现。 cloudSdkPath
deployables 要部署的服务或配置的 YAML 文件。默认为暂存目录中的 app.yaml 文件。 如果找不到此文件,则尝试在暂存目录中自动生成必要的配置文件(例如 app.yaml)。 app.deploy.deployables
dockerDirectory 包含 Dockerfile 和其他 Docker 资源的目录。默认值为 ${basedir}/src/main/docker/ app.stage.dockerDirectory
imageUrl 使用特定的 Docker 映像进行部署。ImageUrl 必须是有效的 Container Registry 名称,例如 gcr.io/foo,其中 foo 是映像的名称。 app.deploy.imageUrl
projectId 用于此调用的 Google Cloud 项目名称。默认值是初始化 gcloud 时选择的当前项目。 app.deploy.projectId
promote 提升已部署的版本以接收所有流量。默认值为 True app.deploy.promote
server 要连接的 App Engine 服务器。通常,您无需更改此值。 app.deploy.server
stagingDirectory 必需。要暂存应用的目录。默认值为 ${project.build.directory}/appengine-staging app.stage.stagingDirectory
stopPreviousVersion 在部署接收所有流量的新版本时,停止以前运行的版本。 app.deploy.stopPreviousVersion
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 发生更改而停止和重启您的应用。

您可以使用以下参数,其中一些参数对应于本地开发服务器命令行标志

属性 说明 插件配置 命令行配置
automaticRestart 更改 Web 应用文件(资源或类文件)时自动重启实例。如需配置 Maven 以将已编译的类文件放置在 Web 应用的正确目录中,您必须更改 Maven outputDirectory 设置:

<build>
  <outputDirectory>
    target/${project.artifactId}-${project.version}/WEB-INF/classes
  </outputDirectory>
  ...
<plugins>
...
devserver.automaticRestart app.devserver.automaticRestart
environment 要发送到本地开发服务器的环境变量的映射。 示例:

<environment>
  <key1>value1</key1>
  <key2>value2</key2>
</environment>
      
devserver.environment app.devserver.environment
jvmFlags 启动应用实例时要传递至 java 命令的其他参数。可以多次指定此参数。示例:

<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

生成用于部署的应用 build 目录。

您可以使用以下参数:

参数 说明 用户属性
appEngineDirectory 包含 app.yaml 和其他受支持的 App Engine 配置文件的目录。默认值为 ${basedir}/src/main/appengine app.stage.appEngineDirectory
artifact 要部署的 JAR 或 WAR 归档的位置。默认值为 ${project.build.directory}/${project.build.finalName}.${project.packaging} app.stage.artifact
cloudSdkPath 用于配置 gcloud CLI 位置的可选参数。 cloudSdkPath
dockerDirectory 包含 Dockerfile 和其他 Docker 资源的目录。默认值为 ${basedir}/src/main/docker/${basedir}/src/main/docker/ app.stage.dockerDirectory
stagingDirectory 必需。要暂存应用的目录。默认为 ${project.build.directory}/appengine-staging app.stage.stagingDirectory

appengine:start

以异步方式启动 App Engine 开发网络服务器,然后返回命令行。当此目标运行时,行为与 run 目标完全相同,但以下情况除外:Maven 继续处理目标,并在服务器启动并运行后退出。

您可以使用以下参数:

属性 说明 插件配置 命令行配置
environment 要发送到本地开发服务器的环境变量的映射。 示例:

<environment>
  <key1>value1</key1>
  <key2>value2</key2>
</environment>
      
devserver.environment app.devserver.environment
jvmFlags 启动应用实例时要传递至 java 命令的其他参数。可以多次指定此参数。示例:

<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 用于配置 gcloud CLI 位置的可选参数。如果未指定此属性,则该插件会自动下载 gcloud CLI。 cloudSdkHome cloudSdkHome