grails - Grails:自动执行Grails插件安装

标签 grails plugins gant

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

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

  • 增加插件
  • 的版本
  • 打包插件
  • 检查插件是否已安装在测试应用程序中,如果已安装,请删除它。
  • 重新安装插件。

  • 非常感激,

    最佳答案

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

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

    运行命令

    grails deploy
    

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

    plugin-home / scripts / 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)
    

    为了递增,我编写了一个脚本,该脚本仅编辑源文件并递增版本号:

    plugin-home / 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
    
    
    }
    

    关于grails - Grails:自动执行Grails插件安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786739/

    相关文章:

    eclipse - 如何调试Grails命令

    eclipse - 在grails中使用graphql插件最终会导致:java.lang.ClassNotFoundException:org.grails.compiler.web.converters.RenderConverterTrait

    spring - Grails:阅读资源包

    c# - 关联方法

    grails - 从grails项目执行gant脚本

    grails - Gradle 与 Gant

    grails - JBoss EAP 6中的Grails 3应用为404

    grails - 覆盖 grails.views.default.codec ='html' 配置回 'none'

    jquery - 光滑的旋转木马没有出现

    javascript - 插件内 jquery 数据方法的奇怪行为