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

时间:2013-07-29 15:54:37

标签: 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.
    }

1 个答案:

答案 0 :(得分:2)

plugins块是正确的。如果从拉链安装后它无法正常工作,您可能会从之前遗留下来。

为了将事物保存在一个地方,我想删除

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以强制完全重新解析并重建。

然后,使用发布插件的{{1},而不是使用内联插件(因为我们现在从POM文件中读取该信息并且除非您正确打包插件,否则它们不可用,因为我们从POM文件中读取了这些信息)。 } script。

将其添加到maven-install部分(删除您可能拥有的任何旧版本):

plugins

并在运行build ':release:2.2.1', ':rest-client-builder:1.0.3', { export = false } 以解决问题后,grails compile脚本将可用。这会打包您的插件并将其复制到maven-install文件夹中的正确位置。然后,如果您在应用程序的BuildConfig.groovy中的$HOME/.m2/repository块中添加或取消注释mavenLocal(),您只需在应用程序中为插件添加依赖项,就像它在主仓库中发布一样,例如< / p>

repositories

在对插件进行更改时定期重新运行plugins { compile ':my-cool-security-plugin:0.1' } ,并删除目标目录以强制在应用中重新安装。