在 Groovy-Eclipse 中导入 DSL 的自定义内容
我使用 Groovy 作为计算引擎 DSL,并且非常喜欢我们现在在 Eclipse 中通过 STS 和 Groovy-Eclipse 插件提供的支持(我使用的是 STS 2.8.0M2,最新的里程碑是 Groovy-Eclipse 2.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)
...
任何指针赞赏。
I'm using Groovy for a calculation engine DSL and really like the support we now have in Eclipse with STS and the Groovy-Eclipse plug-in (I'm on STS 2.8.0M2 with latest milestone of Groovy-Eclipse 2.5.2).
One issue I have is I don't know how to get the Groovy editor to 'know' the automatic imports I've added to my script runner, meaning Eclipse gives me a whole bunch of false errors. If you use the Groovy class loader, you can add additional import for 'free', so you avoid needing to do imports in your script.
I've had a play with the DSLD support in Groovy-Eclipse (which can be used to add auto-completion support) but it's not obvious to me that this is something I could do with it - I don't find the DSLD documentation the simplest to follow.
The inferencing settings for Groovy in Eclipse didn't look like the right thing either.
For example:
def result = new CalculationResult()
gives me an error on the CalculationResult
class as it's not imported, but the script will execute correctly in my environment because of the customized imports on the Groovy class loader. I'm using the standard import customization provided by Groovy, for example:
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)
...
Any pointers appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这似乎在他们的 bugtracker 中出现在插件的 2.6 版本中。
但安德鲁·艾森伯格的评论并不是好兆头:
不过,也许对这个问题进行投票不会出错?
This seems to be in their bugtracker as coming in the 2.6 release of the plugin.
But the comment from Andrew Eisenberg doesn't bode well:
Still, maybe a vote on that issue wouldn't go amiss?