我将Groovy用于计算引擎DSL,并且非常喜欢我们现在在Eclipse中对STS和Groovy-Eclipse插件的支持(我使用的是STS 2.8.0M2和Groovy-Eclipse2.5.2的最新里程碑)。
我遇到的一个问题是,我不知道如何让Groovy编辑器“知道”我添加到脚本运行器中的自动导入,这意味着Eclipse会给我带来一大堆错误。如果你使用Groovy类加载器,你可以免费添加额外的导入,这样你就不需要在你的脚本中进行导入了。
我曾经尝试过Groovy-Eclipse中的DSLD支持(可以用来添加自动补全支持),但是我并不清楚这是不是我可以用它来做的事情--我觉得DSLD文档并不是最容易理解的。
Eclipse中Groovy的推理设置看起来也不像是正确的。
例如:
def result = new CalculationResult()在CalculationResult类上显示错误,因为它没有导入,但是由于Groovy类加载器上的自定义导入,脚本可以在我的环境中正确执行。我使用的是Groovy提供的标准导入定制,例如:
import org.codehaus.groovy.control.customizers.ImportCustomizer
import org.codehaus.groovy.control.CompilerConfiguration
def importCustomizer = new ImportCustomizer()
importCustomizer.addImport 'CalculationResult', 'ch.hedgesphere.core.type.CalculationResult'
def configuration = new CompilerConfiguration()
configuration.addCompilationCustomizers(importCustomizer)
...感谢您的指点。
发布于 2011-10-12 17:37:42
对于be in their bugtracker来说,这似乎是在2.6版本的插件中出现的。
但安德鲁·艾森伯格的评论并不是好兆头:
不幸的是,这不是DSLD可以做的事情。由于缺少导入可能意味着编译错误,因此我们需要一种方法来增强编译器查找。也许有一种方法可以在DSLD中指定此信息,但这将意味着以一种非常不同的方式连接到DSLD。更有可能的是,这必须通过Eclipse插件(如gradle工具)来指定。
另一种可能性是,我们可以确保在协调过程中应用某些类型的AST转换,这样编辑器就会“神奇地”知道这些额外的导入。然而,我们必须研究这一点的可行性。
不过,也许就这个问题进行投票不会有什么问题?
https://stackoverflow.com/questions/7709415
复制相似问题