创建和安装grails插件 - 我的插件如何从插件中访问依赖于安装期间/之后的资源?

时间:2013-03-07 21:33:40

标签: grails plugins dependencies

这个问题是我在这里发布的另一个问题的延伸:

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的文件未包含在我的插件中,因此我无法引用它?

  • 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的引用是否不正确?

提前致谢!

1 个答案:

答案 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中的任何脚本。