使用哪个App Engine Maven插件?
最近我一直在使用Google App Engine,偶然发现了一些对我来说很神秘的事情,也许你可以澄清一下。
根据谷歌自己的一些网站( https://cloud.google.com/appengine/docs/java/tools/maven )你应该使用
com.google.appengine appengine-maven-plugin ${appengine.maven.plugin.version}
并根据其他一些页面( https://cloud.google.com/appengine/docs/java/tools/maven-reference )你应该使用
com.google.cloud.tools appengine-maven-plugin 1.1.0-beta
现在我真的很困惑我应该使用哪个。 为什么首先有两个版本?
我面临的问题:
两者似乎都支持不同的目标。 一个支持部署等,另一个支持update和update_cron。
我需要所有这三个目标,任何方式我都可以拥有一个依赖?
在此先感谢,希望有人可以帮助我。
萨沙
com.google.appengine appengine-maven-plugin ${appengine.maven.plugin.version}
第一个是基于之前(但未弃用)的appcfg
(或Java SDK
)。
它提供了许多针对App Engine 的目标 ,包括dev-server和deploy的基本目标 ,还有更新队列,更新cron,更新索引,真空索引,……
com.google.cloud.tools appengine-maven-plugin 1.1.0-beta
这是最新版本,仍处于测试阶段。 它基于GCloud SDK
并且具有有限的目标集。
在这里您可以看到Maven Central的最新版本,最新版本是1.0.0
,我没有看到1.1.0-beta
版本
如何选择合适的插件 :如果您只需要使用dev-server
和deploy
您可以使用基于GCloud SDK
的最新插件。
这两个目标也可以在基于appcfg
的插件中找到,但如果您需要更多特定目标(如处理队列,cron,索引……),则只能使用最后一个目标。
此外, Google Cloud Endpoints目标仅适用于appcfg
目标
最后,这两个插件可以在同一个项目中共存。 使用它们的技巧是使用目标完整路径而不是短路径( 源 )。
例如:
-
com.google.cloud.tools:appengine-maven-plugin:run
-
com.google.appengine:appengine-maven-plugin:devserver
并不是
-
appengine:run
-
appengine:devserver
如果你使用较短的版本,Maven无法解析正确的groupId(因为artifactId在两个插件上是相同的)
目前,这两个插件都是可操作的,并且没有关于基于appcfg
的插件的弃用痕迹。
以我为例,我总是在GCloud插件中使用部署(我认为与appcfg插件相比,部署程序稍微好一些),但是当我需要更新cron /队列时,我使用上一个插件的目标。 我在项目中同时使用它们没有任何问题
请记住,如果要使用基于GCloud的GCloud,则需要在本地计算机上安装 (和配置) GCloud 。
这是另一个讨论相同主题的线程: `gcloud app deploy`与`appcfg.py`
两个插件的官方文档链接如下:
com.google.appengine groupId
com.google.cloud.tools groupId
两个插件都受支持,它们具有相同的artifactId( appengine-maven-plugin
),但目标不同,行为也不同。 我认为这是谷歌组织软件演变的另一个例子。 他们可以简单地保留一个插件,并通过检查它们在环境中的存在,发布警告/推荐等,从一个SDK透明地移动到另一个SDK。