首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

精通 Grails 创建自定义插件(4)

精通 Grails 创建自定义插件(4)

打包并部署插件要准备一个完整的 Grails 应用程序以便部署,通常需要输入 grails war。但对于插件,则应输入 grails package-plugin。这样,您的项目中将生成一个 grails-shortenurl-0.1.zip 文件。
回想一下,“” 介绍过,所有 Grails 插件都作为 ZIP 文件分发。查看一下 home 目录中的 .grails/1.1.1/plugins 目录,您将看到类似的插件名称,比如 grails-hibernate-1.1.1.zip 和 grails-searchable-0.5.5.zip。
假如 ShortenUrl 是一个公共插件,您可以输入 grailsrelease-plugin 将您的更改提交到 Grails Plugins 门户网站。然后,任何人都可以输入 grails install-plugin shortenurl 将它集成到他们的项目中。您也可以在本地轻松安装私有插件,只需提供 ZIP 文件在您的本地文件系统上的完整路径。
要测试这一点,在 shortenurl 目录外创建一个新的空目录。输入 grails create-app foo 创建一个简单的应用程序。切换到 foo 目录并输入 grails install-plugin /local/path/to/grails-shortenurl-0.1.zip,当然,要用实际插件路径替换其中的路径。您将看到类似于清单 12 的输出:
清单 12. 安装一个本地插件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ grails install-plugin /code/grails-shortenurl-0.1.zip
Welcome to Grails 1.1.1 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /opt/grails

Base Directory: /code/foo
Running script /opt/grails/scripts/InstallPlugin.groovy
Environment set to development
     [copy] Copying 1 file to /Users/sdavis/.grails/1.1.1/plugins
     Installing plug-in shortenurl-0.1
     [mkdir] Created dir:
     /Users/sdavis/.grails/1.1.1/projects/foo/plugins/shortenurl-0.1
     [unzip] Expanding:
     /Users/sdavis/.grails/1.1.1/plugins/grails-shortenurl-0.1.zip into
     /Users/sdavis/.grails/1.1.1/projects/foo/plugins/shortenurl-0.1
Executing shortenurl-0.1 plugin post-install script ...
Plugin shortenurl-0.1 installed




如您所见,本地、私有插件的生命周期和公共插件的相同。
在文本编辑器中打开 foo/application.properties 文件,确认 plugins.shortenurl 如清单 13 所示。
清单 13. 确认插件出现在 application.properties 中
1
2
3
4
5
6
7
8
#utf-8
#Wed Aug 19 14:38:24 MDT 2009
app.version=0.1
app.servlet.version=2.4
app.grails.version=1.1.1
plugins.hibernate=1.1.1
plugins.shortenurl=0.1
app.name=foo




安装插件后,应该确认它能够正常工作。输入 grails create-controller test。打开 grails-app/controllers/TestController.groovy 并添加清单 14 中的代码。
清单 14. 将服务注入到控制器中
1
2
3
4
5
6
7
8
9
10
11
12
class TestController {
    def shortenUrlService

    def index = {
      render "This is a test for the ShortenUrl plug-in <br>" +
             "Type test/tinyurl?q=http://grails.org to try it out."
    }
     
    def tinyurl = {
      render shortenUrlService.tinyurl(params.q)
    }   
}




注意,def shortenUrlService 将服务注入到控制器中。输入 grails run-app 启动应用程序。在 Web 浏览器中访问 http://localhost:9090/foo/test/tinyurl?q=http://grails.org,应该可以看到如图 4 所示的结果。
图 4. 确认插件安装成功如果您访问 http://tinyurl.com/3xfpkv,肯定会进入 grails.org 页面。
结束语如您所见,创建 Grails 插件与创建典型的 Grails 应用程序没有多大区别。创建插件时,应该输入 grails create-plugin 而不是 grails create-app,应该输入 grails package-plugin 而不是 grails war。除了在 GrailsPlugin.groovy 描述符文件中添加的细节不同外,所有中间步骤(创建服务和编写测试等)都是相同的。
返回列表