快速业务通道

精通Grails: Grails 事件模型 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
eaning complete

当然,您可以不向控制台写入简单的消息,而是进行一些实际工作。可能需要删除一些额外的目录。 您可能喜欢通过用新的文件覆盖现有文件来 “重置” XML 文件。任何能在 Groovy(或通过 Java 编程 )中完成的工作都可以在这里完成。

CreateFile 事件

以下是另一个可在构建期间引入的事件示例。每次输入 create- 命令之一(create-controller、 create-domain-class 等等),都会触发 CreatedFile 事件。看看 scripts/CreateDomainClass.groovy ,如清单 5 所示:

清单 5. CreateDomainClass.groovy

Ant.property(environment:"env") grailsHome = Ant.antProject.properties."env.GRAILS_HOME" includeTargets << new File ( "${grailsHome}/scripts/Init.groovy" ) includeTargets << new File( "${grailsHome}/scripts/CreateIntegrationTest.groovy") target (''default'': "Creates a new domain class") {    depends(checkVersion)   typeName = ""   artifactName = "DomainClass"   artifactPath = "grails-app/domain"   createArtifact()   createTestSuite() }

在此不能看到 CreatedFile 事件的调用,不过看一下 $GRAILS_HOME/scripts/Init.groovy 中的 createArtifact 目标($GRAILS_HOME/scripts/CreateIntegrationTest.groovy 中的 createTestSuite 目标最终也调用 $GRAILS_HOME/scripts/Init.groovy 中的 createArtifact 目标)。在 createArtifact 目标的倒数第二行,可以看到以下调用:event("CreatedFile", [artifactFile])。

该事件与 CleanStart 事件的最大差异是:前者会将一个值传回给事件处理程序。在本例中,它是刚 才创建的文件的完全路径(随后会看到,第二个参数是一个列表 — 可以需要传递回以逗号分隔的值)。 必须设置事件处理程序来捕获传入的值。

假设您想将这些新创建的文件自动添加到源控件。在 Groovy 中,可以将平时在命令行中输入的所有 内容包含在引号内并在 String 上调用 execute()。将清单 6 中的事件处理程序添加到 scripts/Events.groovy:

清单 6. 自动向 Subversion 添加工件

eventCreatedFile = {fileName ->  "svn add ${fileName} ".execute()  println "### ${fileName} was just added to Subversion."  }

现在输入 grails create-domain-class Hotel 并查看结果。如果没有使用 Subversion,此命令将静默失败。如果使用 Subversion,输入 svn status。此时应该看到添加的文件( 域类和对应的集成测试)。

精通Grails: Grails 事件模型(3)

时间:2011-07-25 IBM Scott Davis

发现调用的构建事件

要发现什么脚本抛出什么事件,最快方式 是搜索 Grails 脚本中的 event() 调用。在 UNIX® 系统中,可以使用 grep 搜索 Groovy 脚本中的 event 字符串,如清单 7 所示:

清单 7. 使用 Grep 搜索 Grails 脚本中的事件调用

$ grep "event(" *.groovy Bootstrap.groovy:    event ("AppLoadStart", ["Loading Grails Application"]) Bootstrap.groovy:     event("AppLoadEnd", ["Loading Grails Application"]) Bootstrap.groovy:    event("ConfigureAppStart", [grailsApp, appCtx]) Bootstrap.groovy:    event("ConfigureAppEnd", [grailsApp, appCtx]) BugReport.groovy:  event("StatusFinal", ["Created bug-report ZIP at ${zipName}"])

知道调用的事件后,可以在 sc

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号