Какой плагин App Engine Maven использовать?

Я работал с Google App Engine в последнее время и наткнулся на то, что для меня загадка, может быть, вы можете уточнить.

В соответствии с некоторыми из собственных веб-сайтов Google ( https://cloud.google.com/appengine/docs/java/tools/maven) вы должны использовать

<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>${appengine.maven.plugin.version}</version>
</plugin>

и в соответствии с некоторыми другими страницами ( https://cloud.google.com/appengine/docs/java/tools/maven-reference) вы должны использовать

<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.1.0-beta</version>
</plugin>

Теперь я действительно смущен тем, что мне следует использовать. Почему на первом месте две версии?

Проблема, с которой я сталкиваюсь:

Кажется, что оба поддерживают разные цели. Один поддерживает развертывание и т. Д., А другой - update и update_cron.

Мне нужны все 3 из этих целей, в любом случае я могу иметь их с одной зависимостью?

Заранее спасибо, надеюсь, кто-нибудь может мне помочь с этим.

Sascha

2 ответа

<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>${appengine.maven.plugin.version}</version>
</plugin>

Первый основан на предыдущем (но не устарел) appcfg (или же Java SDK).

Он предлагает множество Целей, специфичных для App Engine, основные с dev-сервером и развертыванием, а также для очередей обновлений, cron обновлений, индексов обновлений, вакуумных индексов,...

<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.1.0-beta</version>
</plugin>

Это самый новый, все еще в бета-версии. Он основан на GCloud SDK и имеет ограниченный набор целей.

Здесь вы можете увидеть последнюю версию Maven Central, последняя версия 1.0.0 Я не вижу 1.1.0-beta версия

Как правильно выбрать плагин: если вам нужно только использовать dev-server а также deploy Вы можете использовать новейший плагин на основе GCloud SDK,

Эти 2 цели также доступны в appcfg на основе плагина, но если вам нужны более конкретные цели (например, обработка очереди, cron, индексы, ...), доступны только с этой последней.

Кроме того, цели конечных точек Google Cloud доступны только для appcfg один

В конце концов, эти два плагина могут сосуществовать в одном проекте. Хитрость в том, чтобы использовать оба из них - использовать полный путь цели вместо короткого ( источник).

Например:

  • com.google.cloud.tools:appengine-maven-plugin:run
  • com.google.appengine:appengine-maven-plugin:devserver

И не

  • appengine:run
  • appengine:devserver

Если вы используете более короткую версию, Maven не сможет определить правильный идентификатор группы (поскольку artifactId одинаков для обоих плагинов)

На данный момент оба плагина работают, и нет никаких следов обесценивания appcfg основанный один.

Возьмем, к примеру, я всегда использую развертывание в плагине GCloud (я считаю, что это немного лучше, чем процедура развертывания по сравнению с процедурой appcfg), но когда мне нужно обновить cron/queues, я использую цель предыдущего плагина. У меня нет никаких проблем с тем, чтобы иметь оба на них внутри моего проекта

Помните, что если вы хотите использовать GCloud на основе, вам необходимо установить (и настроить) GCloud на локальном компьютере.

Вот еще один поток, обсуждающий ту же тему: `gcloud app deploy` против`appcfg.py`

Официальная документация для обоих плагинов приведена ниже:

com.google.appengine groupId

com.google.cloud.tools groupId

Оба плагина поддерживаются, они имеют одинаковый artifactId (appengine-maven-plugin), но разные цели и ведут себя по-разному. Я думаю, что это еще один случай плохой организации эволюции программного обеспечения Google. Они могут просто сохранить один плагин и прозрачно переходить с одного SDK на другой, проверяя свое существование в среде, публикуя предупреждения / рекомендации и т. Д.

Другие вопросы по тегам