2013-04-03 187 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 


}