首页 > 解决方案 > Maven 部署到 Google Cloud。appengine:deploy 是否执行完整的清理/构建?

问题描述

我正在将一个应用程序部署到 Google Cloud,它将在 AppEngine 下运行。这是我部署的一个 Maven 应用程序:

mvn appengine:deploy

appengine:deploy的文档没有解释这是否会执行完全清理。将应用程序部署到 AppEngine 的最佳做法是什么?是否需要显式清洁?我通常这样做:

mvn clean install
mvn appengine:deploy

标签: javamavengoogle-app-enginedeploymentgoogle-cloud-platform

解决方案


好的,所以仔细查看控制台输出mvn appengine:deploy,我发现这会在本地target文件夹中执行新构建,然后将应用程序暂存到以下文件夹中的单独文件夹中target

建造

[INFO] --------------------------------
[INFO] Building my-project 1.0-SNAPSHOT
[INFO] --------------------------------

...

[INFO] Packaging webapp
[INFO] Assembling webapp [my-project] in [C:\my-project\target\my-project-1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [C:\my-project\src\main\webapp]
[INFO] Webapp assembled in [114 msecs]
[INFO] Building war: C:\my-project\target\my-project-1.0-SNAPSHOT.war

阶段

[INFO] --- appengine-maven-plugin:1.3.1:deploy (default-cli) @ my-project ---
[INFO] Deleting the staging directory: C:\my-project\target\appengine-staging
[INFO] Staging the application to: C:\my-project\target\appengine-staging
[INFO] Detected App Engine standard environment application.

这表明不一定要执行清洁。当我做:

 mvn clean install appengine:deploy

然后我得到不同的输出,明确表明执行清理:

[INFO] --------------------------------
[INFO] Building my-project 1.0-SNAPSHOT
[INFO] --------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.0.0:clean (default-clean) @ my-project ---
[INFO] Deleting C:\my-project\target

...

注意- 使用mvn clean install编译、打包并将编译后的代码放入本地存储库(以便其他项目可以引用它)。这对于自动化部署可能很重要mvn clean package可以使用,但它会跳过将代码添加到本地存储库)

所以我建议部署的最佳实践是:

mvn clean install appengine:deploy

部署到 App Engine 时遇到的问题-mvn appengine:deploy failed to delete one or more files

如果您遇到此问题,请停止您正在调试或运行的任何应用程序并关闭您正在运行的任何 IDE。即使您正在调试未尝试部署的其他应用程序,也可能会发生错误。这是因为跨应用程序共享的本地临时位置用于某些部署分段,并且本地运行的应用程序可以锁定位于临时位置的文件。)


推荐阅读