在 Grails 2.3.7
我正在使用 _Events.groovy
钩入WAR打包做一些特殊处理:
_Events.groovy
import demo.utils.XmlUtil
eventCreateWarStart = { name, stageDir ->
XmlUtil.doSomething()
...
log.debug('done!')
}
在构建 WAR 时,Grails 提示
XmlUtil
进口声明。 _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)
}
问题
最佳答案
这是一种痛苦,但当你想到它时,它确实是有道理的。 _Events.groovy
是构建过程的一部分,它还负责编译您尝试在 _Events.groovy
中使用的类。 .绝对是一个 catch-22 场景,但我看不出如何在不拆分 _Events.groovy
的情况下做得更好在构建过程的不同阶段编译和加载的单独文件。
您可以使用 grailsConsole.log("hi")
或 grailsConsole.updateStatus("hi")
将输出记录到控制台。
关于grails - 导入用于 grails 脚本 _Events.groovy 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24469911/