1

我刚刚切换到 grails 2.2 并且遇到了一个主要的插件问题。我有一个应用程序 - my-app 和一个插件 - my-plugin。我想将 spring-security-core 插件安装到 my-plugin 中,然后将 my-plugin 安装到 my-app 中。当我完成此操作并执行 s2-quickstart 后,就创建了 LoginController。我现在可以毫无问题地启动我的插件,但是当我尝试启动我的应用程序时,它抱怨它找不到任何 springsecurity 类。错误如下所示:

12:无法解析类 org.springframework.security.web.WebAttributes @ 第 12 行,第 1 列。 7:无法解析类 org.springframework.security.authentication.AccountExpiredException @ 第 7 行,第 1 列。 11:无法解析类org.springframework.security.core.context.SecurityContextHolder @ 第 11 行,第 1 列。

在我看来,就像只有 my-plugin 可以看到 spring security 插件依赖项,而 my-app 不能,所以他们甚至没有按照手册认为应该有的级联。

我还尝试通过在 BuildConfig.conf 中添加以下内容来安装 spring-security-core 插件: compile ":spring-security-core:1.2.7.3" 但它也不起作用。

有任何想法吗?

4

2 回答 2

0

谢谢伯特的建议。我已经使用了它,这就是我的想法:

我创建了一个插件应用程序并在其中安装了 spring-security-core 插件(使用 DataSource.groovy,而不是安装插件)。然后我创建了一个主应用程序并安装了我的插件应用程序(再次使用 DataSource.groovy)。当我在 grails 2.1.1 中执行此操作时,一切正常 - 我可以在我的主应用程序中使用 spring-security,因此依赖关系得到了恰到好处的拉动。当我做同样的事情时,但在 grails 2.2 中,我无法在我的主应用程序中使用 spring-security,所以依赖项没有被取消。这就是为什么我认为这可能是新 grails 版本中的某种错误。

于 2013-01-29T16:37:00.977 回答
0

如果你install-plugin在插件中使用,它只能通过在application.properties. 它不会作为插件的依赖项导出。这可以用于插件,例如code-coverage您希望在开发和测试期间使用它的地方,但不强制用户也安装它。

在旧版本的 GrailsdependsOn中,插件描述符中的映射用于表达插件依赖关系。现在不推荐使用这有利于pluginsBuildConfig.groovy. 这既是为了保持一致性,也是为了利用依赖 DSL 支持的更细粒度的特性,包括指定范围和排除项。对于应用程序也是如此 - 不要install-plugin用于应用程序或插件,始终使用BuildConfig.groovy.

看看spring-security-ldap 插件的 BuildConfig.groovy。它对核心插件有一个编译范围依赖,加上一个hibernate未导出的插件(因为它只是用于测试)和一个对发布插件的构建范围依赖(也没有导出,因为它只是用于发布插件) .

您可能应该在BuildConfig.groovy. 删除您的任何插件引用application.properties并转换为BuildConfig.groovy语法并运行,grails clean然后运行grails compile​​.

于 2013-01-29T15:23:27.443 回答