【发布时间】:2016-06-24 07:54:47
【问题描述】:
我正在尝试将 Grails 项目用作插件,基本上将我的域类放在插件中,然后在多个 Grails 项目中使用它们。
我已经这样做了:
grails 创建应用程序网络
grails 创建应用插件
在两个项目的根目录中创建一个 settings.gradle 包括“插件”、“网络”
然后我在插件中添加了 spring security 并使用 s2-quickstart 创建了一个用户和一个角色域类,并在 Bootstrap.groovy 中添加了一些默认用户。
单独启动插件项目不会显示任何问题。
现在我将插件作为依赖项添加到 Web 项目中: 编译(':插件') 这样我就可以从 web 项目中的插件访问域类,它编译得很好。我将 spring 配置添加到 application.groovy,现在我正在尝试使用 web 项目中插件中的域类。
尝试这个但是我的项目没有正确启动,它告诉我这个:
java.lang.IllegalStateException: Either class [htcommon.HtRole] is not a domain class or GORM has not been initialized correctly or has already been shutdown. If you are unit testing your entities using the mocking APIs
只要我的代码尝试执行 new HtRole(...).save()
插件中的域类似乎无法以某种方式识别为 GORM 类。
【问题讨论】:
-
您应该使用
create-plugin而不是create-app。另外,是否使用正确的命名空间正确导入 HtRole? -
你应该用
grails create-plugin plugin而不是create-app来创建你的插件。在编写更多内容之前,您真的应该阅读有关如何创建插件的文档。你这里有很多问题。 -
我尝试了 grails create-app plugin --profile=plugin 以及 grails create-plugin 所有这些都产生了不同的错误。 :s 我应该阅读哪些文档?我从这里开始讨论多项目的内容:grails.github.io/grails-doc/latest/guide/… 它清楚地表明要通过 create-app @AlexanderKerchum 创建一个插件:HtRole 已正确导入,它编译得很好
-
另外,我认为
compile (':web')应该是compile (':plugin')。我必须查看您的更多代码才能为您提供更多信息。 -
是的,这是我在解释我所做的事情时犯的一个错误,我对插件项目有编译依赖项
标签: grails spring-security grails-orm grails-plugin multi-project