java - 使用哪个 App Engine Maven 插件?

标签 java maven google-app-engine maven-plugin appengine-maven-plugin

最近一直在使用 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-serverdeploy,您可以使用基于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/

相关文章:

java - 连接到 Cloud SQL 时出错

google-app-engine - 更新后的静态文件需要多长时间才能开始提供服务?

maven - Hudson/Jenkins 如何确定工作结果状态?

java - 将字符串 "30-MAR-07"转换为日期对象

java - 动态删除 Spring ApplicationListener 的最佳实践?

java - 缺少通用类类型的导入建议

java - 如何正确地将预编译的jar放入maven项目中?

java - spring-boot-maven-plugin 创建具有依赖关系的 jar

google-app-engine - 从已部署的应用连接到 Google Cloud SQL 服务器时遇到问题

java - 如何启动和停止部署在 tomcat 嵌入式服务器中的应用程序