从Groovy 1.8之后,可以不使用import关键字,就能轻松地为Groovy文件添加import声明。Hubert Klein Ikkink在“Groovy Goodness”中给出了具体用法。
用法很简单,就是定义ImportCustomizer,使用其addImport方法为脚本添加包、类、别名等信息。之后,将配置过的ImportCustomizer添加至CompilerConfiguration对象。下面看一个具体的示例:
- 在com.mrhaki.blog下创建了一个类和enum;
- 创建Groovy脚本,其中会用到Post类,但是却没有为Post定义import。此时运行这个脚本,一定是会出现无法解析的错误。
- 创建另一Groovy脚本,内容如下:
import org.codehaus.groovy.control.customizers.ImportCustomizer
import org.codehaus.groovy.control.CompilerConfiguration
//为脚本添加import;
def importCustomizer = new ImportCustomizer()
//导入静态的com.mrhaki.blog.Type.*
importCustomizer.addStaticStars 'com.mrhaki.blog.Type'
//导入com.mrhaki.blog.Post,并为其定义别名:Article;
importCustomizer.addImport 'Article', 'com.mrhaki.blog.Post'
def configuration = new CompilerConfiguration()
//将配置过的ImportCustomizer添加至CompilerConfiguration对象
configuration.addCompilationCustomizers(importCustomizer)
//创建shell,执行上步创建的脚本
def shell = new GroovyShell(configuration)
shell.evaluate new File('sample.groovy')
注意,需要将com.mrhaki.blog.Post和com.mrhaki.blog.Type编译后的类文件添加至本脚本的classpath中,如果你使用的是IDE,可以忽略这一步。
一切就绪后,执行本脚本,错误不再!
关于示例中详细代码,请参见原文。关于更多的Groovy窍门,参见Groovy Goodness。

最新评论
9 周 6 小时之前
9 周 1 天之前
11 周 5 天之前
11 周 5 天之前
17 周 2 天之前
17 周 4 天之前
19 周 3 天之前
20 周 1 天之前
20 周 2 天之前
20 周 5 天之前