在您的项目中添加基于 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 网络开发服务器。 |
如需详细了解如何设置和使用 Maven,请参阅使用 Maven。
目标参数
每个目标都包含您可以使用的相关参数。您可以在 pom.xml
中或通过命令行指定这些设置。
要在 pom.xml
中配置这些设置,请在 <configuration>
部分添加参数名称。
以下示例演示了如何拆分 JAR 文件、停止以前运行的版本,以及指定 gcloud CLI 路径:
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.7.0</version>
<configuration>
<stage.enableJarSplitting>true</stage.enableJarSplitting>
<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:goal 执行,请将 skip
参数设置为 true。
appengine:deploy
暂存应用并将其部署到 App Engine。
您可以使用以下参数,其中部分参数对应于 gcloud app deploy
命令行标志:
参数 | 说明 | 插件配置 | 命令行配置 |
---|---|---|---|
appEngineDirectory |
.yaml 配置文件(Cron、索引等)的位置,用于配置特定部署(appengineDeployCron 等)。对于标准应用,您的 .xml 配置文件在暂存到 .yaml 时会进行转换,并放置在 target/appengine-staging/WEB-INF/appengine-generated 中。 |
deploy.appEngineDirectory |
app.deploy.appEngineDirectory |
bucket |
用于暂存与部署关联的文件的 Cloud Storage 存储分区。如果未指定此参数,则使用应用的默认存储分区。 | deploy.bucket |
app.deploy.bucket |
cloudSdkHome |
用于配置 gcloud CLI 位置的可选参数。如果未指定此属性,则该插件会自动下载 gcloud CLI。 | cloudSdkHome |
cloudSdkHome |
cloudSdkVersion |
用于指定所需 gcloud CLI 版本的可选参数。 | 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 |
dockerfile 的位置,用于在柔性环境中运行的 App Engine 标准环境应用。 仅适用于 App Engine 标准环境。 | stage.dockerfile |
app.stage.dockerfile |
enableJarClasses |
将 WEB-INF/classes 内容压缩为 jar 文件。仅适用于 App Engine 标准环境。
|
stage.enableJarClasses |
app.stage.enableJarClasses |
enableJarSplitting |
将大于 10 MB 的 JAR 文件拆分为多个较小的片段。仅适用于 App Engine 标准环境。 | stage.enableJarSplitting |
app.stage.enableJarSplitting |
enableQuickstart |
使用 Jetty 快速启动模块处理 servlet 注释。仅适用于 App Engine 标准环境。 | stage.enableQuickstart |
app.stage.enableQuickstart |
force |
强制部署,以替换此版本以前的任何正在进行的部署。 | deploy.force |
app.deploy.force |
imageUrl |
使用特定的 Docker 映像进行部署。Docker 网址必须来自有效的 Google Container Registry 主机名之一。 | deploy.imageUrl |
app.deploy.imageUrl |
jarSplittingExcludes |
从所有 JAR 文件中排除与英文逗号分隔的 SUFFIXES 列表匹配的文件。 仅适用于 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 |
必需。已编译的 Web 应用文件或分离型 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
发生更改而停止和重启您的应用。
您可以使用以下参数,其中一些参数对应于本地开发服务器命令行标志:
属性 | 说明 | 插件配置 | 命令行配置 |
---|---|---|---|
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
生成用于部署的应用目录。系统会在 appengine:deploy
目标之前自动调用暂存阶段。此阶段负责:
- 将 Web 应用 JSP 编译为 Servlet 类
- 解析所有已添加注释的 Servlet 并生成 Jetty 快速入门
web.xml
(仅当web.xml
配置为使用 3.1 版 Servlet 规范时适用)。 - (可选)将已编译的类放入 jar 中
- 从以下文件生成完整的
app.yaml
:appengine-web.xml
、web.xml
、已添加注释的 Servlet - 将 Web 应用的所有静态文件(html、css、js、图片等)复制到
__static__/
目录,然后将该目录部署为app.yaml
中配置的静态文件。
暂存目录可用于检查正在部署的内容,并且可以按原样用于 gcloud app deploy
命令。
您可以使用以下参数:
参数 | 说明 | 插件配置 | 命令行配置 |
---|---|---|---|
cloudSdkHome |
用于配置 gcloud CLI 位置的可选参数。如果未指定此属性,则该插件会自动下载 gcloud CLI。 | cloudSdkHome |
cloudSdkHome |
cloudSdkVersion |
用于指定所需 gcloud CLI 版本的可选参数。 | cloudSdkVersion |
cloudSdkVersion |
compileEncoding |
编译 JSP 时使用的字符编码。仅适用于 App Engine 标准环境。 | stage.compileEncoding |
app.stage.compileEncoding |
deleteJsps |
编译后删除 JSP 源文件。仅适用于 App Engine 标准环境。 | stage.deleteJsps |
app.stage.deleteJsps |
dockerfile |
dockerfile 的位置,用于在柔性环境中运行的 App Engine 标准环境应用。 仅适用于 App Engine 标准环境。 | stage.dockerfile |
app.stage.dockerfile |
enableJarClasses |
将 WEB-INF/classes 内容压缩为 jar 文件。仅适用于 App Engine 标准环境。
|
stage.enableJarClasses |
app.stage.enableJarClasses |
enableJarSplitting |
将大于 10 MB 的 JAR 文件拆分为多个较小的片段。仅适用于 App Engine 标准环境。 | stage.enableJarSplitting |
app.stage.enableJarSplitting |
enableQuickstart |
使用 Jetty 快速启动模块处理 servlet 注释。仅适用于 App Engine 标准环境。 | stage.enableQuickstart |
app.stage.enableQuickstart |
jarSplittingExcludes |
从所有 JAR 文件中排除与英文逗号分隔的 SUFFIXES 列表匹配的文件。 仅适用于 App Engine 标准环境。 | stage.jarSplittingExcludes |
app.stage.jarSplittingExcludes |
sourceDirectory |
必需。已编译的 Web 应用文件或分离型 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 开发网络服务器,然后返回命令行。当此目标运行时,行为与 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 |
排查上传错误的问题
如果使用 deploy
目标,您的部署尝试可能会失败,并显示类似如下的消息:404 Not Found This application does not exist (app_id=u'your-app-ID')
。如果您有多个 Google 帐号,并且在使用错误的帐号执行更新,则会出现这种错误。
要解决此问题,请尝试使用 gcloud auth login 更改已获授权的用户。