grails - 将Spring Security依赖项添加到Grails插件

标签 grails spring-security grails-plugin dependency-management

我正在开发供内部使用的Grails 2.2.3插件,并且在该插件中,我希望获得在每个应用程序中使用的已配置安全设置。 Spring Security配置,Spring Security LDAP配置以及自定义UserDetails类和UserDetailsContextMapper类。

我已经解决了所有这些问题,但是我遇到的问题是我无法使依赖项在插件中正常工作。如果使用该插件的应用程序在其插件依赖项中声明spring-security-corespring-security-ldap,则效果很好,但应用程序不必声明此依赖项-插件应负责处理。

那么,如何正确安装和使用spring-security-corespring-security-ldap插件呢?这是插件中的BuildConfig.groovy文件:

    plugins {
        compile ":spring-security-core:1.2.7.3"
        compile ":spring-security-ldap:1.0.6"
        //Putting this in the app USING the plugin makes it work fine.
    }

最佳答案

plugins块是正确的。如果从zip安装后仍无法正常工作,则可能是以前有一些残留物。

为了将东西放在一个地方,我喜欢删除

grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports" 

并替换为
grails.project.work.dir = 'target'

所以一切都在target文件夹下。当事情变得怪异时,运行rm -rf target强制进行完全重新解析和重建。

然后,而不是使用内联插件(对于传递性deps来说不是很好,因为我们现在从POM文件中读取了该信息,除非正确包装了该插件,否则这些信息不可用)或使用zip,请使用发布插件的maven-install脚本。

将此添加到plugins部分(删除您可能拥有的任何旧版本):
build ':release:2.2.1', ':rest-client-builder:1.0.3', {
   export = false
}

在运行grails compile以解决该问题之后,maven-install脚本将可用。这将打包您的插件,并将其复制到$HOME/.m2/repository文件夹中的正确位置。然后,如果您在应用程序的BuildConfig.groovy的mavenLocal()块中添加或取消注释repositories,则只需在您的应用程序中为插件添加一个依赖项,就好像它是在主仓库中发布的,例如
plugins {
   compile ':my-cool-security-plugin:0.1'
}

对插件进行更改时,请定期重新运行grails maven-install,并删除目标目录以强制在应用程序中重新安装。

关于grails - 将Spring Security依赖项添加到Grails插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17928596/

相关文章:

java - 如何在 Spring 中拦截 RequestRejectedException?

grails - 使用 Spring Security 处理成功登录事件

grails - 格栅 fixture

grails - 记录今天已登录的所有用户的用户名

java - Spring OAuth2客户端,CSRF保护

grails - Grails 3.2.8无法在 Controller 中获取springSecurityService.currentUser

grails - 是否可以从生产环境中排除 grails 插件?

grails - 如何在 grails 插件中设置本地依赖项(主应用程序的类路径)?

grails - Grails <g:select>出现问题

generics - Grails 类型检查/CompileStatic/GrailsCompileStatic