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

精通 Grails 了解插件(2)

精通 Grails 了解插件(2)

探索这个插件的基础架构纵览 Blogito 的所有目录,这里似乎没有任何新的文件。如果通过 Web 浏览器访问 http://localhost:9090/blogito/searchable,那里应该会有一个 grails-app/controllers/SearchableController.groovy 文件。但奇怪的是,该文件不在那里。在 lib 目录中也应该有一些 Lucene 与 Compass 的 JAR 文件,但它一如您首次键入 grails create-app 启动这个项目时一样,是空的。实际上,对 Blogito 的惟一更改就是在 application.properties 中加入的这一行新代码,如清单 4 所示:
清单 4. application.properties,显示了新安装的 Searchable 插件
1
2
3
4
5
6
7
8
#utf-8
#Wed Jun 24 15:41:16 MDT 2009
app.version=0.4
app.servlet.version=2.4
app.grails.version=1.1.1
plugins.searchable=0.5.5
plugins.hibernate=1.1.1
app.name=blogito




通过 plug-ins.searchable 这一行代码,可以判断 Blogito 已经知晓 Searchable 插件的存在。那么所有这些功能都藏在哪了?要想查明,需返回到第一次安装此插件时一闪而过的那个屏幕输出。接下来,我将带您探个究竟。
当键入 grails install-plugin searchable 后,所发生的第一件事情是向 Web 发出一个请求来拉出插件的最新列表,如清单 5 所示:
清单 5. 下载插件的主列表
1
2
3
4
5
6
7
8
9
10
11
12
13
$ grails install-plugin searchable
//snip

Reading remote plugin list ...
  [get] Getting: http://svn.codehaus.org/grails/trunk/grails-plugins/
      .plugin-meta/plugins-list.xml
  [get] To: /Users/sdavis/.grails/1.1.1/plugins-list-core.xml
  [get] last modified = Mon Jun 22 04:16:31 MDT 2009

Reading remote plugin list ...
  [get] Getting: http://plugins.grails.org/.plugin-meta/plugins-list.xml
  [get] To: /Users/sdavis/.grails/1.1.1/plugins-list-default.xml
  [get] last modified = Wed Jun 24 06:51:24 MDT 2009




这两个列表 — core 和 default — 提供了这些插件的元数据,包括作者、描述和版本号。更重要的是,在这里,Grails 可以发现实际包含这些插件的 ZIP 文件所对应的 URL。清单 6 显示了来自于 plugins-list-core.xml 文件的有关 Hibernate 插件的信息:
清单 6. Hibernate 插件的描述
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<plugins revision="9011">
  <plugin latest-release="1.1.1" name="hibernate">
    <release tag="RELEASE_1_1" type="svn" version="1.1">
      <title>Hibernate for Grails</title>
      <author>Graeme Rocher</author>
      <authorEmail/>
      <description>A plugin that provides integration between
        Grails and Hibernate through GORM</description>
      <documentation>http://grails.org/doc/$version</documentation>
        <file>http://svn.codehaus.org/grails/trunk/grails-plugins/
          grails-hibernate/tags/RELEASE_1_1/grails-hibernate-1.1.zip
        </file>
    </release>
    <!-- snip -->
  </plugin>
</plugins>




目前,Hibernate 插件是核心插件文件内所列的惟一一个插件。这个列表包含了必需 插件 — Grails 运行所不能或缺的功能。默认列表包括了来自于社区的可选插件。
您是否注意到  中这些文件保存的位置?在主目录中(在类似 UNIX® 的系统上,主目录为 /Users/任何人;在 Windows® 系统上,主目录为 C:\Documents and Settings\任何人)创建了一个 .grails 目录。这个目录内保存了在键入 grails run-app 时被编译的那些类。当键入 grails clean 时,projects 下的 application 目录会被删除。但是,如您所见,.grails 也是存放下载插件的地方。用文件编辑器打开 .grails/1.1.1/plugins-list-default.xml 并找到 Searchable 插件这一项。请见清单 7:
清单 7. Searchable 插件的描述
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<plugin latest-release="0.5.5" name="searchable">
  <release tag="RELEASE_0_5_5" type="svn" version="0.5.5">
    <title>Adds rich search functionality to Grails domain models.
      This version is recommended for JDK 1.5+</title>
    <author>Maurice Nicholson</author>
    <authorEmail>maurice@freeshell.org</authorEmail>
    <description>Adds rich search functionality to Grails domain models.
      Built on Compass (http://www.compass-project.org/) and Lucene
      (http://lucene.apache.org/)
      This version is recommended for JDK 1.5+
    </description>
    <documentation>http://grails.org/Searchable+Plugin&lt;/documentation>
    <file>http://plugins.grails.org/grails-searchable/
      tags/RELEASE_0_5_5/grails-searchable-0.5.5.zip</file>
  </release>

  <!-- snip -->
</plugin>




一旦 Grails 发现了从哪里可以下载这些插件,它(理所当然)会将这些所需要的插件下载到 .grails/1.1.1/plugins,如清单 8 所示:
清单 8. 下载插件
1
2
3
4
5
6
7
8
$ grails install-plugin searchable
  //download core and default plugin lists

  // continued...
  [get] Getting: http://plugins.grails.org/grails-searchable/
  tags/RELEASE_0_5_5/grails-searchable-0.5.5.zip
  [get] To: /Users/sdavis/.grails/1.1.1/plugins/grails-searchable-0.5.5.zip
  [get] last modified = Thu Jun 18 22:24:45 MDT 2009




最后,Grails 会从本地缓存中将这些插件复制到您的项目并进行解压缩,如清单 9 所示:
清单 9. 向您的项目中添加插件
1
2
3
4
5
6
7
8
9
10
11
12
$ grails install-plugin searchable
  //download core and default plugin lists
  //download requested plugin

  // continued...
  [copy] Copying 1 file to /Users/sdavis/.grails/1.1.1/projects/blogito/plugins
  Installing plug-in searchable-0.5.5
  [mkdir] Created dir:
     /Users/sdavis/.grails/1.1.1/projects/blogito/plugins/searchable-0.5.5
  [unzip] Expanding:
     /Users/sdavis/.grails/1.1.1/plugins/grails-searchable-0.5.5.zip into
     /Users/sdavis/.grails/1.1.1/projects/blogito/plugins/searchable-0.5.5




>
更深一步研究从 Grails 1.1 的发布说明中可以找到关于此插件基础架构的更多信息(参见 )。从中可以了解如何安装全局性的插件(以便所创建的每个新的项目都会自动包含这些特定的插件)、如何向列表中添加替代插件存储库、如何限制插件只在特定环境中运行或是只针对特定的 Grails 命令行脚本运行,等等。

不过,在您进行太过深入的研究之前,请务必确保这对您来说具有实际意义。在 application.properties 内的行对应于 .grails 内的 project 目录中的解压缩目录。这就意味着要想卸载一个插件,可以键入 grails uninstall-plugin myplugin,或者干脆将这一行从 application.properties 中删除并手动地从 .grails 的 project 目录中将这个目录删除。
插件以简单的 ZIP 文件来回传递,知晓这一点非常重要。在下一篇文章中,我将向您展示如何创建您自已的插件并通过一个本地 ZIP 文件(grails install-plugin myplugin /local/path/to/myplugin.zip)来安装这个插件。您甚至可以通过一个远程 URL —grails install-plugin myplugin http://somewhere.com/myplugin.zip 来安装这个插件。
返回列表