精通Grails: 创建自定义插件

这个 精通 Grails 系列文章主要关注智能代码重用。如果您需要在多个地方复制和粘贴相同的 GroovyServer Pages (GSP) 代码段,您就可以创建一个部分模板或一个自定义 TagLib。如果您发现有一 两个方法在多个控制器或域类中很普遍,您就可以使用 ExpandoMetaClass 创建一个抽象父类来直接扩展 或嫁接这些方法。如果您有某个共享应用程序功能,那么可以将它重构为一个服务或一个自定义编解码器 。

关于本系列

Grails 是一个现代的 Web 开发框架,它将熟悉的 Java 技术(比 如 Spring 和 Hibernate)和最新的实践(比如约定优于配置)结合起来。用 Groovy 编写的 Grails 使 您可以与遗留的 Java 代码无缝集成,同时又添加了脚本语言的灵活性和动态性。学习了 Grails 之后, 您将对 Web 开发有新的看法。

但这些都是微观层面上的东西。如果在宏观层面有某个共享功能, 需要控制器和域类、服务和编解码器,以及一个典型的 Grails 的其他组件的联合和协调,那又该怎么办 呢?如前所述,答案就是插件。

在 “精通 Grails:了解插件” 中,我们学习了一个 现有插件:Searchable。Grails Plugins 门户网站有 250 多个插件可用(参见 参考资料)。这个数字 还在不断增加,原因是通过插件扩展现有的 Grails 应用程序是 Grails 的核心理念。在本文中,您将学 习如何构建自己的自定义插件。示例插件的源代码可以从 下载 获取。

ShortenUrl 插件简介

测试至上

测试您的 Grails 应用程序总是很重要,在创建插件时,测试尤其重要。插件中 的缺陷的负面影响可能会成倍放大,损害安装该插件的应用程序。您将看到,本文将重点关注测试。

在这个 Twitter.com 和手机消息通讯时代,许多长 URL 不能满足消息上设置的 140 个字符的限 制,这是一件麻烦事!幸运的是,有几个 URL 缩短服务强烈要求作为自定义插件集成到 Grails 中。

要创建一个自定义插件,必须略微更改 Grails 例程。您必须输入 grails create-plugin(见清单 1 ),而不是像往常一样输入 grails create-app。(一定要在一个新的空目录中输入这个命令,而不是 在一个现有 Grails 目录中输入。本文末尾将介绍如何集成这个新插件和一个现有 Grail 应用程序)。

清单 1. 创建一个自定义插件

$ grails create-plugin shortenurl

生成的目录结构与一个典型的 Grails 应用程序一致。但是,根目录中有一个文件将这个项目识别为 一个插件:ShortenurlGrailsPlugin.groovy。清单 2 显示了一段代码:

清单 2. 插件配置文件

class ShortenurlGrailsPlugin {
   // the plugin version
   def version = "0.1"
   // the version or versions of Grails the plugin is designed for
   def grailsVersion = "1.1.1 > *"
   // the other plugins this plugin depends on
   def dependsOn = [:]
   // resources that are excluded from plugin packaging
   def pluginExcludes = [
       "grails-app/views/error.gsp"
   ]

   // TODO Fill in these fields
   def author = "Your name"
   def authorEmail = ""
   def title = "Plugin summary/headline"
   def description = '''\\
Brief description of the plugin.
'''

   //snip
}

时间: 2024-12-31 23:45:30

精通Grails: 创建自定义插件的相关文章

精通Grails系列

精通Grails: 构建您的第一个Grails应用程序 精通Grails: 身份验证和授权 精通Grails: 使用Ajax实现多对多关系 精通Grails: 文件上传和Atom联合 精通Grails: 用Groovy服务器页面(GSP)改变视图 精通Grails: 用JSON和Ajax实现异步Grails 精通Grails: 用定制URI和codec优化Grails中的URI 精通Grails: 改变Grails应用程序的外观 精通Grails: 在企业中使用Grails 精通Grails:

精通Grails: 了解插件

在开始阶段,精通 Grails 主要着眼于核心 Grails 功能.对如何将基础部件组合在一起了解得越多 ,将其结合起来构建一个完善的产品应用程序就会变得越容易.尽管我前面多次提到过插件,但我均有意 回避了对插件做深入的介绍.现在,该是介绍的时候了. 在接下来的几篇系列文章中,我将与您一起探索 Grails 插件系统.最早,Grails 平台的构建对可插 入性是有所考虑的.正因为有了这个虽小却十分重要的考虑,我们才能很方便地利用上百个预捆绑的功能 块. 在本文写作之时,清单 1 所示的 Groo

jQuery创建自己的插件(自定义插件)的方法_jquery

但必须知道,这些插件不是自己凭空产生的,它们是由开发人员编写.测试并完善的,这些人员为 jQuery 社区奉献了自己的业余时间.我们做这些都是免费的,是出于对自己代码的热爱.本文主要关注您如何回报这个伟大的社区,即如何编写自己的插件并上传到 jQuery 的插件页面.这可以让所有人使用您创建的插件,可以让整个 jQuery 开发社区变得更好.今年您也做出自己的贡献吧. 在编写本文中的插件时,我发现插件的创建过程以及用来创建它的框架非常简单明了.困难的地方在于想一些其他人还没有做过的事情,并编写一

精通Grails: 用Groovy服务器页面(GSP)改变视图

本系列的前两篇文章介绍了 Grails Web 框架的基本构建块.我曾反复强调过 -Grails 基于模 型-视图-控制器(Model-View-Controller,MVC)架构模式(请参阅 参考资料),Grails 利用约定优于 配置 将框架的各个部分组合在一起.Grails 用命名直观的文件和目录代替了更容易出错的在外部配置文 件中手工对这些链接进行归类的老方法.例如,在 第一篇文章 可以看到控制器拥有 Controller 后缀, 存储在 grails-app/controller 目录

精通Grails: 改变Grails应用程序的外观

欢迎阅读第二年度的 精通 Grails.正如我在 2008 年的最后一篇文章中许诺的一样,在新的一年将 使用新的应用程序.再见了,Trip Planner!让我们欢迎 blog 发布系统(blog publishing system)! 我已经将这个应用程序命名为 Blogito.在西班牙语中,它表示 "little blog",或者是对笛卡儿 的 Cogito ergo sum("我思故我在")表示敬意.可从 blogito.org 下载这个完整的应用程序.在接

在Visual Studio.NET中使用自定义插件最大化您的生产力(一)

visual|最大化 这篇文章假设您已经熟悉C#, Visual Basic .NET和CLR 难度程度 1 2 3 摘要 对于开发者来说,不管多么强大的集成开发环境(IDE)都需要具有自定义插件的功能.基于这个原因,Visual Studio. NET IDE提供了一个可扩展的.添加方便的而且还没有数量限制的自定义插件功能.这个自定义插件可以用Visual Basic.C.C#或则其它的.NET的使用的语言来编写.这篇文章解释了如何在Visual Studio. NET中增加一个自定义插件的例

怎样为SharePoint网站创建自定义导航菜单

相信不少人都希望把SharePoint网站内置的那个顶部导航菜单,换成自己希望的样式.由于SharePoint 2007/2010的网站导航基本上基于标准的ASP.NET SiteMap模型,所以只要你对ASP.NET SiteMap有一些了解,就能创建一个自定义的导航菜单. 在开始之前,让我们先从网上随便找一个样子比较cool的菜单控件.在下面的示例中,我会选择使用Smooth Navigation Menu这个jQuery控件,来渲染出SharePoint网站的顶部导航菜单.将Smooth

精通Grails: 使用Ajax实现多对多关系

在 Web 应用程序中,多对多(m:m)关系很难处理.在 精通 Grails 系列的这一期文章中,Scott Davis 将向您展示如何在 Grails 中成功实现 m:m 关系.了解如何通过 Grails 对象关系映射(Grails Object Relational Mapping,GORM)API 和后端数据库处理多对多关系.学习如何使用 Ajax (Asynchronous JavaScript + XML)流线化用户界面. 软件开发就是使用代码来模拟现实世界.例如,书籍都有作者和出版商

精通Grails: 文件上传和Atom联合

在过去几期的 精通 Grails 文章中,您一直在逐步构建一个小型的博客服务(Blogito).在这篇文 章中,Blogito 将最终完工,成为一个实用的博客应用程序.您将为博客条目主体实现文件上传功能,并 添加自己制作的用于聚合的 Atom feed. 但是,在开始之前,请注意在上一篇文章("身份验证和授权")中,我加入的认证使 UI 中出现一 个细小的 bug.在加入新的特性之前,应该修复这个 bug. 修复隐藏的 bug 启动 Grails 时,grails-app/conf/B