1

我目前正在为我正在处理的项目定义项目结构。该项目是一个简单的 SOA 实现,因此有一个 grails 应用程序和许多不同的服务。

我想将这些服务打包到单独的模块(jar)中,以便它们可以轻松地单独部署,并且不存在成本污染类的风险。

项目结构和依赖关系可以可视化为:

Grails App (war)
|__ Service Gateway (jar)
    |__Service A (jar)
    |__Service B (jar)

虽然这些服务最终将单独部署,但为了便于本地开发,我想将它们打包到单个 grails 应用程序中,直到有必要将它们分开。

我的最终目标是能够以与开发简单 grails 应用程序相同的方式开发这些服务,因为我将能够动态更改任何类(在任何模块内)并让它接受。

我正在努力寻找 IntelliJ 中表示这种结构的最佳方式。

我为上述每个模块创建了单独的模块并添加了它们之间的依赖关系,但显然 grails 在运行时不知道这一点。

我已经阅读并找到了以下可能的解决方案,所有这些目前都感觉有点不满意,因为需要构建一个 jar,这意味着无法动态重新加载类。

  1. 将模块安装到本地 maven 存储库中,并在 grails 构建依赖项中引用它。
  2. 将构建的 jar 放入 lib 目录。
  3. 将它们添加为 grails 插件(似乎有点笨拙,因为它们不需要 grails 功能)。
  4. 在 grails 类路径中找到包含这些模块的输出目录的其他方法(不确定最干净的方法)。

谢谢!

4

1 回答 1

0

最后,我使用了多模块 Maven 构建。动态代码部署的关键是使用 JRebel 监视输出目录并在类发生更改时重新加载它们。

于 2012-10-29T19:48:54.200 回答