7

按照 cloud.google.com 上的建议,我一直在使用带有 Maven 的 Eclipse 编写 GAE 应用程序。最近,我需要使用“后端”或一组不同的实例来处理某个任务。我发现“后端”已被弃用,取而代之的是“模块”。在过去的几天里,我一直在尝试设置项目以使用模块,但进展甚微。

我想要做的就是将不同的 URL 分派到不同的实例集(使用模块和 dispatch.xml)。有谁知道我如何转换我现有的 Eclipse 项目来做到这一点?我什至愿意做一个新项目。

我需要我的模块:1) 使用我原始应用程序中的共享源代码/类 2) 拥有不同数量的常驻实例 3) 遵守 dispatch.xml 中的规则

我希望我的项目在 eclipse 中运行并使用 gradle 或 maven。

4

3 回答 3

6

我有同样的问题,我用这种方式解决了。

Appstart ( https://github.com/omerio/appstart ) 一个基于样板 maven 的多模块 App Engine 应用程序,演示了 Guice、Jersey、Objectify、Cloud EndPoints 等技术的使用,并具有 3 个模块:前端模块、后端模块和通用模块,包括所有通用类,包括模型,它应该向您展示如何管理通用代码的示例。该文件夹包含以下模块/maven 项目

  • appstart-后端
  • appstart-common
  • appstart-ear
  • appstart-前端

后端模块只包含后端所需的代码,前端包含前端代码,公共模块包含公共代码。这些项目设置在带有父 maven POM 的父文件夹“appstart”中。公共模块使用 maven 依赖项包含在前端和后端中:

<!-- Common module dependency -->
    <dependency>
        <groupId>uk.co.inetria.appstart</groupId>
        <artifactId>appstart-common</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

当您更改公共代码时,您可以运行 mvn clean 然后从 appstart-ear 目录安装,它应该会更新所有依赖项目。我希望这有帮助

于 2014-12-09T05:34:00.550 回答
1

我最终做的是在 eclipse 中创建一个新的企业应用程序项目,将我的代码和配置复制到新的文件结构中,然后将项目重新导入为 maven 项目。目前看来一切正常。

于 2014-12-03T20:07:44.717 回答
0

这是我使用 eclipse Kepler 创建的多模块项目的演练。

1) 将 mymodule1 创建为普通的动态 web 项目

设置目标运行时:Google App Engine (xxx)

将项目添加到耳朵:选中

设置EAR项目名称:myear

这将创建两个 eclipse 项目,一个与模块关联,另一个与 ear 文件关联:

我的模块1

我的耳朵

在这两个项目集的 appengine-application.xml 中

<application></application>

保存您的 GAE 项目的名称(例如 mygaeproject-11111) 您应该已经在云控制台中创建了这个名称,并将保存多个模块。

2)在mymodule1的appengine-application.xml下

<application>mygaeproject-11111</application>

添加...

<module>mymodule1</module>

(否则,您稍后会出现“具有相同键的多个条目”异常)

3) 在 mymodule1 的 appengine-application.xml 中,添加您希望模块在其上运行的实例类(在 appengine-web-app 内),例如:

<instance-class>F2</instance-class>

3) 从项目菜单中清理 mymodule1 和 myear。如果您愿意,您现在可以将 myear 部署到您的本地 google 应用服务器。

4) 您还需要一个默认模块来部署到生产服务器,因此将 mymodule2 创建为普通的动态 Web 项目

设置目标运行时:Google App Engine (xxx)

将项目添加到耳朵:选中

设置EAR项目名称:myear

5) 在 mymodule2 的 appengine-application.xml 中设置以下内容,并像以前一样设置一个实例类。

<application>mygaeproject-11111</application>
<module>default</module>

6)在myear的application.xml(不是appengine-application.xml)中设置关联的上下文根

<web-uri>mymodule2.war</web-uri> 

<context-root>default</context-root>

7)好的,现在清理并再次构建所有内容并部署到您本地的谷歌应用服务器。如果一切正常,只需右键单击服务器面板中的服务器并选择... 部署到远程服务器

8) 如果稍后您想终止项目,请在您的云控制台中选择它,然后转到左侧窗格中的设置并单击禁用应用程序。

于 2016-08-24T18:02:06.417 回答