想象一下,我们有一个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/