java - Maven 部署到 Google Cloud。appengine:deploy 是否执行完整的清理/构建?
问题描述
我正在将一个应用程序部署到 Google Cloud,它将在 AppEngine 下运行。这是我部署的一个 Maven 应用程序:
mvn appengine:deploy
appengine:deploy的文档没有解释这是否会执行完全清理。将应用程序部署到 AppEngine 的最佳做法是什么?是否需要显式清洁?我通常这样做:
mvn clean install
mvn appengine:deploy
解决方案
好的,所以仔细查看控制台输出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。即使您正在调试未尝试部署的其他应用程序,也可能会发生错误。这是因为跨应用程序共享的本地临时位置用于某些部署分段,并且本地运行的应用程序可以锁定位于临时位置的文件。)
推荐阅读
- sql - 将 Big Query Table 架构从字符串 (YYYY-MM-DD HH:MM:SS TIMEZONE) 修改为日期时出现无效日期错误
- typescript - 在打字稿角度2中设置变量
- java - 将 APK 复制到设备失败
- css - 如何在反应中为父类设置页面特定样式
- python - x 的 Sigmoid 为 1
- django - 如何在 Django 多对多(通过)关系中删除中间模型的单个实例?
- vba - 将行从 1 个源工作表复制到与工作表名称匹配的工作表
- angular - Angular 5 可链接的 API 调用以获取巨大的对象,并将进度报告给 UI
- python - Selenium 无法打开新窗口/选项卡
- laravel - 通过关系 Laravel 访问数据