Maven развертывание в Google Cloud.Appengine: deploy выполняет полную очистку / сборку? - PullRequest
0 голосов
/ 23 мая 2019

Я развертываю приложение в Google Cloud, которое будет работать под AppEngine.Это приложение Maven, которое я развертываю, используя:

mvn appengine:deploy

Документация для appengine: deploy не объясняет, выполняет ли это полную очистку.Как лучше всего развертывать приложение в AppEngine?Требуется ли явная очистка?Я обычно делаю:

mvn clean install
mvn appengine:deploy

1 Ответ

1 голос
/ 23 мая 2019

ОК, поэтому внимательно глядя на вывод консоли для 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

Stage

[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, на которой вы работаете. Ошибка может возникнуть, даже если вы отлаживаете другое приложение, которое не пытаетесь развернуть. Это связано с тем, что для некоторых этапов развертывания используется локальное временное расположение, которое используется несколькими приложениями, а локально работающее приложение может блокировать файлы, расположенные во временном местоположении.)

...