3

Ich habe in letzter Zeit mit Google App Engine gearbeitet und bin auf etwas gestoßen, das für mich ein Rätsel ist. Vielleicht können Sie das klären.Welches App Engine Maven Plugin verwenden?

Nach einigen Google-eigenen Websites (https://cloud.google.com/appengine/docs/java/tools/maven) sollten Sie

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

und nach einigen anderen Seiten (https://cloud.google.com/appengine/docs/java/tools/maven-reference) verwenden Sie

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

Jetzt wirklich verwirrt Ich bin verwenden sollte, um was ich benutzen sollte. Warum gibt es überhaupt zwei Versionen?

Problem Ich bin vor:

Die scheinen beide unterschiedliche Ziele zu unterstützen. Einer unterstützt Deploy usw. und der andere update und update_cron.

Ich brauche alle 3 dieser Ziele, egal wie ich sie mit einer Abhängigkeit haben kann?

Vielen Dank im Voraus, hoffe jemand kann mir dabei helfen.

Sascha

Antwort

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

Die erste basiert auf der früheren (aber nicht veraltet) appcfg (oder Java SDK).

Es bietet ein lot of Goals spezifisch für App Engine, die grundlegend, die mit dem dev-Server und dem deploy, sondern auch für die Update-Warteschlangen, zu aktualisieren cron, aktualisiert Indizes, Vakuum-Indizes, ...

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

Es ist das neueste, noch in der Betaversion. Es basiert auf GCloud SDK und hat eine begrenzte Anzahl von Zielen.

Here können Sie die neueste Version von Maven Zentrale sehen, die jüngste ist 1.0.0, ich sehe das nicht 1.1.0-beta Version

Wie Sie das richtige Plugin wählen: Wenn Sie nur dev-server verwenden müssen und deploy können Sie das neueste Plugin basierend auf GCloud SDK verwenden.

Diese 2 Ziele sind auch in dem appcfg basierten Plugin verfügbar, aber wenn Sie spezifischere Ziele benötigen (wie die Handhabung von Warteschlangen, Cron, Indizes, ...) sind nur mit diesem letzten Ziel verfügbar.

Auch die Google Cloud Endpoints goals, sind die einzigen verfügbaren appcfg ein

Am Ende können jene 2-Plug-in demselben Projekt koexistiert. Der Trick, beide zu verwenden, besteht darin, den vollständigen Zielpfad anstelle des kurzen zu verwenden (source).

Zum Beispiel:

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

Und nicht

  • appengine:run
  • appengine:devserver

Wenn Sie die kürzere Version verwenden, ist Maven nicht in der Lage die richtige groupId zu lösen (weil die artifactId das gleiche auf beiden Plugins)

Im Moment beide Plugins wirksam sind, und es ist Spuren nicht eines deprecation über die appcfg basierte One.

Nimm mich zum Beispiel, ich benutze immer die Bereitstellung innerhalb des GCloud-Plugins (ich halte es als Deploy-Verfahren im Vergleich zur appcfg ein wenig besser), aber wenn ich cron/queues aktualisieren muss, verwende ich das Ziel des vorherigen Plugin. Ich habe kein Problem, beide auf sie in meinem Projekt

Denken Sie daran, wenn Sie die GCloud basierend verwenden möchten, müssen Sie GCloud installed (und konfiguriert) auf Ihrem lokalen Rechner haben.

Hier ist ein anderer Thread, die das gleiche Thema diskutiert: `gcloud app deploy` vs. `appcfg.py`

+0

Beide Plugins werden fortlaufend aktualisiert. alter: 1.9.60 2017 Dez, neuer; 1.3.2 2017 Nov (es gibt eine Version 99.99.99, die sehr seltsam ist). In der Zwischenzeit gibt es zwei Seiten von Google Doc, die über sie getrennt berichten, die alte: https://cloud.google.com/appengine/docs/standard/java/tools/maven, die neue: https: // cloud. google.com/appengine/docs/standard/java/tools/using-maven –

+0

nach dieser Seite https://cloud.google.com/appengine/docs/standard/java/tools/migrate-maven können wir Google sehen Stellen Sie eine migrate-Methode zur Verfügung, um com.google.appengine.appengine-maven zu com.google.cloud.tools.appengine-maven zu migrieren. Vielleicht ist die neue Methode also eine gute Wahl, wenn Sie ein neues Maven-Projekt starten. –

+0

Sie authentifizieren sich unterschiedlich. Aus diesem Grund musste ich die com.google.cloud.tools beim Einrichten der Bereitstellung von Jenkins verwenden. –

0

Die offizielle Dokumentation für beide Plugins ist unten verlinkt:

com.google.appengine groupId

com.google.cloud.tools groupId

Beide Plug-Ins unterstützt werden , sie haben die gleiche artifactId (appengine-maven-plugin), aber unterschiedliche Ziele und verhalten sich anders. Ich denke, das ist ein weiterer Fall einer schlechten Organisation einer Software-Entwicklung von Google. Sie könnten einfach ein einzelnes Plugin behalten und transparent von einem SDK zu einem anderen wechseln, indem sie ihre Existenz in der Umgebung überprüfen, Warnungen/Empfehlungen usw. veröffentlichen.

Verwandte Themen