在Grails 2.3.7
中我使用_Events.groovy
挂钩进入WAR包装进行一些特殊处理:
import demo.utils.XmlUtil
eventCreateWarStart = { name, stageDir ->
XmlUtil.doSomething()
...
log.debug('done!')
}
构建WAR时,Grails抱怨XmlUtil
import语句。 _Events.groovy
不是类,因此import语句不起作用。如果我无法导入脚本,如何在脚本中使用自定义类?我如何执行日志记录而不是使用println
?
根据this和this手动加载类似乎可以解决问题,并且通过以下Aaron's答案也可以登录工作:
eventCreateWarStart = { name, stageDir ->
def xmlUtil = loadRequiredClass('demo.utils.XmlUtil')
xmlUtil.doSomething()
...
grailsConsole.log('done!')
}
loadRequiredClass = {classname ->
classLoader.loadClass(classname)
}
答案 0 :(得分:3)
这是一种痛苦,但是当你想到它时它确实有意义。 _Events.groovy
是构建过程的一部分,它还负责编译您在_Events.groovy
中尝试使用的类。绝对是一个catch-22场景,但我不知道如果不将_Events.groovy
拆分成在构建过程的不同阶段编译和加载的单独文件,如何做得更好。
您可以使用grailsConsole.log("hi")
或grailsConsole.updateStatus("hi")
将输出记录到控制台。