导入类以在grails脚本_Events.groovy中使用
在Grails导入类以在grails脚本_Events.groovy中使用,grails,groovy,grails-2.0,Grails,Groovy,Grails 2.0,在Grails2.3.7中,我使用\u Events.groovy连接到WAR打包中,以执行一些特殊处理: _Events.groovy 在构建WAR时,Grails抱怨XmlUtilimport语句\u事件。groovy不是一个类,因此导入语句不起作用。如果无法导入自定义类,如何在脚本中使用它?如何执行日志记录而不是使用println 更新 基于手动加载类,似乎做到了这一点,由于下面的答案,日志也可以正常工作: eventCreateWarStart = { name, stageDir -
2.3.7
中,我使用\u Events.groovy
连接到WAR打包中,以执行一些特殊处理:
_Events.groovy
在构建WAR时,Grails抱怨XmlUtil
import语句<代码>\u事件。groovy不是一个类,因此导入语句不起作用。如果无法导入自定义类,如何在脚本中使用它?如何执行日志记录而不是使用println
更新
基于手动加载类,似乎做到了这一点,由于下面的答案,日志也可以正常工作:
eventCreateWarStart = { name, stageDir ->
def xmlUtil = loadRequiredClass('demo.utils.XmlUtil')
xmlUtil.doSomething()
...
grailsConsole.log('done!')
}
loadRequiredClass = {classname ->
classLoader.loadClass(classname)
}
问题
- Grails脚本可以使用哪些隐式对象
\u Events.groovy
是构建过程的一部分,它还负责编译您试图在\u Events.groovy
中使用的类。这绝对是一个第二十二条军规的场景,但如果不将\u Events.groovy
拆分为单独的文件,在构建过程的不同阶段编译和加载,我看不出如何才能让它变得更好
您可以使用
grailsconnel.log(“hi”)
或grailsconnel.updateStatus(“hi”)
将输出记录到控制台。hi,thx,println
和grailsconnel.log()
之间有什么区别吗?使用grailsconnel可以保证输出看起来与其他grails输出相同。我不确定确切的区别,它可能因平台而异,取决于您是否使用--plain输出标志。()谢谢你的帮助,顺便说一句,我在哪里可以找到脚本可用的所有隐式对象GrailConsole
,classLoader
,等等?最简单的方法就是从\u Events.groovy
内部运行binding.variables.each{println it.key}
。我记不起到底使用了哪个绑定类(可能是BuildSettings.groovy,但我不是100%确定)。在2.3版本中,很多构建内容都发生了变化,我还没有机会完全跟上。
eventCreateWarStart = { name, stageDir ->
def xmlUtil = loadRequiredClass('demo.utils.XmlUtil')
xmlUtil.doSomething()
...
grailsConsole.log('done!')
}
loadRequiredClass = {classname ->
classLoader.loadClass(classname)
}