我的团队建议模块化我们当前的 Grails 项目,因此我们进行了实验。我们已经开始通过 IntelliJ 做到这一点:
Projects > MyProject _right-click_ New > Module ..... create-app
然后,我们将每个先前存在的域
、 Controller
、服务
和 View
移动到其特定的模块
。
当我们运行项目时(通过MyProject run-app -reloading
),之前可访问的页面返回错误404
。当然,现在我们认为这是因为项目目录被重组了。我们尝试从这个旧的 url
访问这些页面:
http://localhost:8080/MyProject/someController
到这个新的url
,假设它只需要附加模块
名称
http://localhost:8080/MyProject/the-new-module-name/someController
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
但是还是不行。我们应该如何运行该项目及其模块以及如何访问它们?我们需要配置一些.config
和.property
文件吗?
这是新项目目录的样子:
MyProject
+.idea
+ grails-app
+ lib
.
.
.
- the-new-module
+.idea
+ grails-app
+ lib
.
.
.
+ web-app
+ wrapper
.
.
.
+ web-app
+ wrapper
编辑:团队想要实现这种“模块化”方法的原因是我们当前的 Grails 项目仍然可以进一步分割为更小的、独立的项目(为了可维护性) , ETC。)。现在,我们已经成功创建(并运行)这些较小的项目。合并这些较小的部分就会出现问题。所以任务是创建一个父 Grails 项目(这是否可能)。
最佳答案
您似乎假设 InteliJ“模块”是 Grails 能够理解的东西。事实并非如此。
制作模块化 Grails 应用程序的正确方法是“插件”。 Grails 非常支持创建您自己的插件。您甚至可以创建内联插件,从而大大加快开发速度。我强烈建议您阅读official documentation关于 Grails 应用程序中的插件创建和使用。
请记住,您的插件可以具有与应用程序几乎所有相同的工件(服务、域类、 Controller 、GSP 等),但会出现在同一应用程序下,就像使用插件的应用程序提供工件一样。
例如,如果您的插件中有 BookController
,它将具有相同的 URL 映射,就像 Controller 是您的基础应用程序的一部分一样。您在问题中表明您希望插件提供的这些 Controller 具有不同的 URL。如果是这种情况,那么您需要为 Controller 命名。您可以在official documentation中阅读更多相关信息。也是。
更新
为了帮助可视化插件如何与模块化 Grails 应用程序配合使用:
/~/MyApp
/~/PluginA
/~/PluginB
MyApp
是主应用程序(使用 grails create-app
创建)。它有自己的功能,并包括 PluginA
和 PluginB
(均使用 grails create-plugin
创建)以将其功能添加到自身中。您可以选择使用内联插件,甚至打包插件并将其发布到您自己的内部存储库以供其他应用程序使用(在本例中为 MyApp
)。请注意,这三个部分都是独立的。它们可以相互独立地进行修改、在源代码管理中进行版本控制、管理、开发等。
关于grails - 访问内部 Grails 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30777930/