2013-04-03 141 views
1

想象一下,我们有一个grails插件(我们正在开发)以及我们用来测试grails插件的测试应用程序。我试图测试插件的_Install.groovy脚本,但每次都是一个过程。Grails:自动化Grails插件安装

谁能请使用GANT或bash自动化的过程中建议的方法:

  1. 增量插件
  2. 包插件
  3. 检查的版本,如果插件已经被安装在测试应用程序,如果它是,删除它。
  4. 重新安装插件。

大加赞赏,

回答

0

对我来说,答案是创建一个Groovy/GANT脚本,并通过命令行执行它。

在我的插件中,我有一个scripts目录,并在那里创建了一个名为Deploy.groovy的脚本。

运行命令

grails deploy 

自动执行此脚本。脚本使用内置的grails目标打包插件,然后通过命令行执行grails命令。

插件家用/脚本/ Deploy.groovy

includeTargets << grailsScript("PackagePlugin_") 
includeTool << gant.tools.Execute 


target(main: "This is the script that tries to test what's going on...") { 

    println ("1. Package the plugin") 
    packagePlugin() 

    println ("2. Confirm the directory") 
    execute.shell("cd ~/quirk-projects/admin-cms-plugin-test && pwd") 

    println ("3. Remove the plugin ") 
    execute.shell("cd ~/quirk-projects/admin-cms-plugin-test && grails uninstall-plugin grails-admin-cms-plugin") 

    println ("4. Install the plugin ") 
    execute.shell("cd ~/quirk-projects/admin-cms-plugin-test && grails install-plugin ../admin-cms-plugin/grails-admin-cms-plugin-0.1.zip") 

    println ("5. Run Application") 
    execute.shell("cd ~/quirk-projects/admin-cms-plugin-test && grails run-app") 

    println ("6. Your plugin is ready for testing...") 

} 

setDefaultTarget(main) 

要增加,我写了一个脚本,只需编辑源文件并增加版本号:

插件家用/ scripts/_Events.groovy

eventCompileStart = { kind -> 

    println("Incrementing Version Number for next time") 

    def version = metadata.'version' 

    if (!version) { 
     version = '1' 
    } else { 
     version = version.toInteger() + 1 
    } 
    metadata.'version' = version.toString() 
    metadata.persist() 

    def file = new File("${basedir}/AdminCmsPluginGrailsPlugin.groovy") 
    def script = file.text 
    def array = script.split("\n") 
    for (int i = 0 ; i < array.length; i++) { 
     if (array[i].indexOf("def version") > -1) { 
      array[i] = " def version = 0." + version 
     } 
    } 

    def newScript = array.join(System.getProperty("line.separator")) 

    file.text = newScript 


}