创建和安装 grails 插件 - 在安装期间/安装后,我的插件如何从依赖的插件访问资源?
Posted
技术标签:
【中文标题】创建和安装 grails 插件 - 在安装期间/安装后,我的插件如何从依赖的插件访问资源?【英文标题】:Creating and installing a grails plugin - how does my plugin access resources from a plugin its dependent upon during/after install? 【发布时间】:2013-02-23 07:13:12 【问题描述】:这个问题是我在这里发布的另一个问题的延伸:
In Grails 2, how do you includeTargets from Gant scripts from a plugin your app is dependent upon?
我正在编写一个 grails 插件,它是我公司特定版本的 shiro 插件,例如。我的公司四郎。我在 BuildConfig.groovy 中将 shiro 设置为我的插件的依赖项,如下所示:
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: .....
这发生在我正在执行的脚本之一尝试访问 shiro 的脚本之一,如下所示:
includeTargets << new File (shiroPluginDir, "/scripts/_ShiroInternal.groovy")
当我编译我的插件时这个参考有效,但当我在另一个 grails 应用程序中安装它时不在这里。
我是否在 BuildConfig.groovy 中错误地设置了依赖项,以至于 shiro 的文件没有包含在我的插件中,因此我无法引用它?
shiro 插件显示在我的 .grails 缓存 my-compnay-shiro/plugins/shiro-1.1.4 中 当我将 my-company-shiro 插件安装到 foo 时,在 .grails 缓存 foo/plugins/my-company-shiro-0.1/dependencies.groovy 和 plugin.xml 文件中引用 shiro。我在这里没有看到任何 shiro 的脚本或文件,但我不知道它们是否应该被复制到这里。在安装时对 shiroPlugin 的引用是否不正确?
提前致谢!
【问题讨论】:
但是错误说没有这样的属性:shiroPluginDir。我很困惑:S 当我打包插件 b/c 时,shiroPluginDir 属性是可见的,我将 shiro 设置为插件依赖项。当我将插件安装到项目中时,我假设 shiro 插件也已安装,并且默认情况下该属性是可见的(ala 引用问题的答案)。 请注意,当我在我安装插件的应用程序上列出插件时,列出了 my-company-shiro,但没有列出 shiro。因此,如果没有安装 shiro,我可能无法引用默认的grails install-plugin
已弃用,您需要改用BuildConfig.groovy
。我这里测试过,在app里面声明了自定义插件就可以了,你可以使用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
运行任何脚本。
【讨论】:
是的,这行得通。现在似乎很明显,我只是没有想到更新 BuildConfig.groovy 时需要编译周期。以上是关于创建和安装 grails 插件 - 在安装期间/安装后,我的插件如何从依赖的插件访问资源?的主要内容,如果未能解决你的问题,请参考以下文章