如何在 Grails 2.0 中运行本地插件?

Posted

技术标签:

【中文标题】如何在 Grails 2.0 中运行本地插件?【英文标题】:How to run a local plugin in Grails 2.0? 【发布时间】:2011-12-30 10:22:21 【问题描述】:

在 Grails 中,有一个变体是如何从源代码中包含本地插件。根据文档,可以输入BuildConfig.groovy

// Useful to test plugins you are developing.
grails.plugin.location.shiro =
        "/home/dilbert/dev/plugins/grails-shiro"

// Useful for modular applications where all plugins and
// applications are in the same directory.
grails.plugin.location.'grails-ui' = "../grails-grails-ui"

问题在于它在 Grails 2.0.RC1 中不起作用。我尝试做grails clean,用grails install-plugin 安装插件并将其放置到BuildConfig.groovy。仍然无法解决。

【问题讨论】:

你得到什么错误?我刚刚尝试了BuildConfig 路线,使用 2.0RC1,它似乎工作正常......你正在做一个或另一个,不是吗?不是grails install-plugin 并同时将其放在BuildConfig.groovy 中? 这该死的简单。有了这个grails.plugin.location.* 行,你根本不应该安装插件。只需在 BuildConfig.groovy 中输入此 lint 并执行 grails run-app! 我同时尝试安装插件或将其放入 BuildConfig DSL :) 谢谢@tim_yates 【参考方案1】:

对于 Grails 3.x,还有另一种方法可以做到这一点。假设你在同一个项目目录中有一个 grails 应用和插件(源代码):

/my-project
---/my-app
---/grails-shiro

要运行您的本地插件,您必须在 my-project 目录中创建一个 settings.gradle 文件,指定您的应用程序和插件的位置:

 include 'my-app', 'grails-shiro'

然后在你应用的 build.gradle 中添加依赖:

 compile project(':grails-shiro')

你已经完成了。

查看plugins documentation 了解更多信息。

【讨论】:

【参考方案2】:

用引号将插件名称括起来,以防它包含破折号:

grails.plugin.location.'plugin-name-with-dashes' = "<path>"

【讨论】:

【参考方案3】:

您也可以将插件安装到本地 maven 缓存中。

文档谈到了这一点:

3.7.10 Deploying to a Maven Repository

maven-install

maven-install 命令会将 Grails 项目或插件工件安装到本地 Maven 缓存中:

grails maven-install

这样做的好处是允许您使用更常见的":plugin-name:version" 语法将插件包含在您的父应用程序中

这允许您的应用程序在生产时确定检索插件的最佳位置。来自内部 maven-repo 或等效的。

【讨论】:

【参考方案4】:

您可以将插件的 .zip 文件添加到您的 /lib 中,它将被安装。

例子:

compile ":myPlugin:1.0"

文件:

/lib/myPlugin-1.0.zip

注意:您必须压缩插件文件夹的内容。

来源:http://grails.1312388.n4.nabble.com/Insert-own-local-plugin-into-build-config-td4646704.html

【讨论】:

这无效,因为每次更新完成时您都必须压缩并替换文件。忘记这一步,你会发现一些非常令人困惑的问题。【参考方案5】:

这对我有用

grails.plugin.location.shiro = "/home/dilbert/dev/plugins/grails-shiro"

其中shiro 是插件的名称(不是它所在目录的名称)。确保插件的路径是绝对路径或应用程序中插件的相对路径。

我发现如果插件在application.propertiesBuildConfig.groovy 中列出,这有时不起作用,所以如果是,请将其删除,然后执行grails clean 并重新启动应用程序。

【讨论】:

通过添加到 buildConfig.groovy 中,此方法适用于我。向@andruso +1 发表关于破折号的评论。如果您的插件包含连字符,则将插件名称用引号括起来。示例:grails.plugin.location.'plugin-name-with-dashes' = ""

以上是关于如何在 Grails 2.0 中运行本地插件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Grails 2.0 中创建和检索 Cookie?

如何在 Grails 2.0 服务中对 i18n 注入 messageSource 的使用进行单元或集成测试

我应该在 grails 2.0 中使用哪个贝宝/支付插件?

如何使 Grails Spring Security 2.0 中的登录/页面成为初始屏幕?

Grails spring安全核心插件:如何删除ajax请求的浏览器提示

用于 Grails 2.0 的 Grails/Gradle 插件