这个问题是我在这里发布的另一个问题的延伸:
In Grails 2, how do you includeTargets from Gant scripts from a plugin your app is dependent upon?
我正在写一个grails插件,这是一个my-company特定版本的shiro插件,例如。我-公司四郎。我将shiro设置为BuildConfig.groovy中插件的依赖项,如下所示:
plugins {compile(":shiro:1.1.4")}
我打包插件并尝试将其安装到名为foo的新grails应用程序:
foo> grails install-plugin ../my-company-shiro/grails-my-company-shiro-01.zip
没问题。 现在,我想在foo中运行一个脚本,该脚本是my-company-shiro的一部分,后者又引用了shiro插件中的脚本:
foo>grails create-auth-controller
我遇到以下失败:
Error Error executing script CreateAuthController: No such property: shiroPluginDir for class: .....
这发生在b / c我正在执行的一个脚本试图访问shiro的脚本之一,如下所示:
includeTargets << new File (shiroPluginDir, "/scripts/_ShiroInternal.groovy")
当我编译我的插件时,此引用有效,但是当我在另一个grails应用程序中安装它时,此参考不起作用。
我是否在BuildConfig.groovy中错误地设置了依赖项,以至于shiro的文件未包含在我的插件中,因此我无法引用它?
在安装时对shiroPlugin的引用是否不正确?
提前致谢!
答案 0 :(得分:2)
grails install-plugin
,而是需要使用BuildConfig.groovy
。我在这里测试,在应用程序中声明自定义插件并且它可以正常工作,您可以使用grails.plugin.location
指定插件的文件夹。
考虑一个名为 shiro-test 的插件,BuildConfig应为:
grails.project.dependency.resolution = {
...
legacyResolve true // whether to do a secondary resolve on plugin installation, not advised and here for backwards compatibility
...
}
grails.plugin.location."shiro-test" = "path/to/plugin"
然后刷新依赖关系并运行shiro-test
中的任何脚本。