1

想象一下,我们有一个 grails 插件(我们正在开发)和一个用于测试 grails 插件的测试应用程序。我正在尝试测试插件的 _Install.groovy 脚本,但每次都是一个相当大的过程。

任何人都可以推荐使用 gant 或 bash 来自动化以下过程的方法:

  1. 增加插件的版本
  2. 打包插件
  3. 检查插件是否已安装在测试应用程序中,如果是,请将其删除。
  4. 重新安装插件。

非常感激,

4

1 回答 1

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)

为了增加,我编写了一个简单地编辑源文件并增加版本号的脚本:

插件主页/脚本/_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


}
于 2013-04-03T14:50:43.383 回答