将项目添加为依赖项和插件之间的差异

时间:2015-12-13 08:29:50

标签: grails gradle

在模块化grails应用程序时,何时将模块添加为插件与gradle依赖项是否有意义?

例如:

  1. akaDomain 包含所有域对象。
  2. akaWebsites 包含所有表示逻辑。
  3. akaService1 包含一些服务。
  4. akaService2 包含一些其他服务。
  5. 所有网站和服务共享 akaDomain

    akaDomain 中存在的域类是否可以用于其他应用程序(如 akaService akaWebsite )中的脚手架控制器和视图?

    可以使用插件或依赖项或两者来实现。 如果我没有制作 akaDomain 的插件,请解释我错过了什么。

    这个answer使用插件来解释如何模块化grails app。

1 个答案:

答案 0 :(得分:2)

您绝对可以使用一个插件中定义的域作为另一个插件或主应用程序中脚手架的基础。但是,这样做有几个实际考虑因素:

  • 如果您选择在插件中实现UI,那么您将承诺在多个应用程序之间共享UI外观。在进行定制/合同开发时,每个客户都希望拥有自己的个人外观,这通常非常困难。您还需要考虑选择UI抽象,至少可以灵活地支持主题。我们使用Twitter Bootstrap用于此目的,但还有其他几个适合该法案。

  • 您必须管理"域/服务"之间的依赖关系。和" UI"插件。任何插件生态系统都是如此,但是一旦你提交抽象,这个规则就非常重要,或者你最终会遇到依赖死角或循环。这是很多工作,但生产力的回报非常高。

关于Grails插件与Gradle依赖关系的问题:

插件实际上是Gradle依赖项(至少在Grails 3.x中)。也就是说,插件依赖关系管理是在Gradle之上实现的。插件为集成到Grails应用程序中提供了额外的支持,其中包括:

  • 启动时自动弹出bean注册和初始化。
  • 参与应用程序组件重新加载。
  • 启动时的人工制品定义和初始化。

因此,使用插件实现并获得两全其美。