如何让Scala Compiler Plugin在Scala IDE中运行

时间:2011-10-21 11:04:28

标签: eclipse scala plugins compiler-construction scala-ide

注意:这是Scala-IDE邮件列表中相同问题的精确转发,我得到零回复,并在5天后放弃等待。

我正在编写Scala编译器插件。它目前被称为 scalawrapper(但我后来可能会找到一个更好的名字)。我有 安装了Typesafe Stack,我把我的插件放在:

下面
C:\Program Files\typesafe-stack\misc\scala-devel\plugins

现在我可以这样调用scalac:

scalac -classpath ... -Xplugin-require:scalawrapper test\...

它会自动找到并使用我的插件。

不幸的是,我无法让Scala-IDE使用它。我总是得到 Missing required plugin: scalawrapper。在“项目属性”中 \ Scala编译器(使用项目设置)\高级“选项卡,我已输入 scalawrapper在Xplugin-require字段中,这是有效的,因为我得到了 错误。但是我在Xpluginsdir中输入的内容似乎没有 效果。

我已尝试过上面给出的绝对路径,尝试过前进 和反斜杠,尝试了一个没有空格的临时目录 在它,已经尝试过相对于项目目录,已经尝试了亲戚 工作区。它不会使用任何东西。我还应该注意到 因为我试图使用ScalaCL,所以并不特定于我自己的插件 之前版本的Scala-IDE中的插件,但失败了 完全相同的原因。

我今天刚刚更新(2011年10月15日),所以应该有最新的 版本(似乎我终于可以将缩进显式设置为4, 但也许我只是忽略了过去的设置。

有人能告诉我它的实际期望,以及用途 当我没有在Xpluginsdir中放任何东西时默认?

1 个答案:

答案 0 :(得分:3)

Scala IDE使用表示编译器,而不是您安装的编译器。要使用插件,使用Scala IDE,您需要在Eclipse中的首选项中指定它。

试试Windows->Preferences->Scala->Compiler。请参阅高级选项卡。路径相对于工作空间。

编辑:当我说相对于工作空间时,我指的是存储.metadata的实际工作空间目录($workspace_loc)。我有一个项目,其中包含源代码的项目文件存储在一个目录中,工作区在其他地方,即$project_loc(c:\ code \ project \ source)与$workspace_loc不同(c :\代码\项目\工作区)。您在编译器参数中指定的目录是相对于工作空间($workspace_loc)。

要了解您是否有类似的设置,请转到该项目并选择Properties->Resource->Linked Resources

我在$workspace_loc下创建了一个名为plugin的目录,并将jar文件放在那里。在Windows->Preferences->Scala->Compiler高级标签下,我有

Xplugin = C:\code\project\workspace\plugin\xxx-0.0.1.jar
Xplugin-require = xxx

请注意,您也可以在项目属性中指定插件,但它仍然使用$workspace_loc。以上配置对我有用。