我正在开发一个Grails2.2.3插件,供内部使用,在插件中,我希望拥有我在每个应用程序中使用的配置的安全设置。Security,Security配置,以及自定义UserDetails类和UserDetailsContextMapper类。
我已经解决了所有这些问题,但问题是我无法让依赖项在插件中正常工作。如果使用插件的应用程序在插件依赖项中声明了spring-security-core和spring-security-ldap,那么它可以正常工作,但是应用程序不应该声明这种依赖--插件应该负责处理它。
那么如何让这个插件正确地安装和使用spring-security-core和spring-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.
}发布于 2013-07-29 18:03:28
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来强制完全重新解决和重建。
然后,使用版本插件的maven-install脚本,而不是使用内联插件(因为我们现在从POM文件中读取了这些信息,除非您正确地打包插件)或压缩插件,而不是使用内联插件(因为我们现在读到了POM文件中的信息)或压缩插件。
将其添加到plugins部分(删除可能具有的任何旧版本):
build ':release:2.2.1', ':rest-client-builder:1.0.3', {
export = false
}在运行grails compile以解决该问题后,maven-install脚本将可用。这将打包插件并将其复制到$HOME/.m2/repository文件夹中的正确位置。然后,如果在应用程序的mavenLocal()中的repositories块中添加或取消注释,您只需在应用程序中添加插件的依赖项,就好像它是在主回购中发布的一样。
plugins {
compile ':my-cool-security-plugin:0.1'
}当您对插件进行更改时,定期重新运行grails maven-install,并删除目标目录以强制在应用程序中重新安装。
https://stackoverflow.com/questions/17928596
复制相似问题