最近一直在使用 Google App Engine,偶然发现了一些对我来说很神秘的东西,也许你可以澄清一下。
根据一些谷歌自己的网站(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>
现在我真的很困惑我应该使用哪个。为什么一开始会有两个版本?
我遇到的问题:
两者似乎支持不同的目标。一个支持 deploy 等,另一个支持 update 和 update_cron。
我需要所有这 3 个目标,有什么方法可以使它们具有一种依赖性?
在此先感谢,希望有人能帮助我。
萨沙
最佳答案
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>${appengine.maven.plugin.version}</version>
</plugin>
第一个基于之前的(但未弃用)appcfg
(或Java SDK
)。
它提供了一个 lot of Goals特定于 App Engine,具有开发服务器和部署的基本应用程序,但也适用于更新队列、更新 cron、更新索引、真空索引……
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.1.0-beta</version>
</plugin>
这是最新的,仍处于测试阶段。它基于 GCloud SDK
并具有一组有限的目标。
Here你可以从Maven Central看到最新的版本,最新的是1.0.0
,我没有看到1.1.0-beta
版本
如何选择合适的插件:
如果您只需要使用dev-server
和deploy
,您可以使用基于GCloud SDK
的最新插件。
这 2 个目标也可在基于 appcfg
的插件中使用,但如果您需要更具体的目标(如处理队列、cron、索引等),则只能使用最后一个。
另外,Google Cloud Endpoints goals , 仅适用于 appcfg
一个
最后,这两个插件可以共存于同一个项目中。同时使用它们的技巧是使用目标完整路径而不是短路径 ( source )。
例如:
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/queues 时,我使用上一个插件的目标.在我的项目中同时使用它们没有任何问题
请记住,如果你想使用基于 GCloud 的,你需要有 GCloud installed (并配置)在您的本地机器上。
这是讨论同一主题的另一个线程:`gcloud app deploy` vs. `appcfg.py`
关于java - 使用哪个 App Engine Maven 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40627278/