Как заставить плагин компилятора Scala работать в Scala IDE

Примечание. Это точная копия того же вопроса в списке рассылки Scala-IDE, где я не получил ни одного ответа и перестал ждать через 5 дней.

Я пишу плагин компилятора Scala. В настоящее время он называется scalawrapper (но я мог бы найти лучшее имя позже). У меня установлен стек Typesafe, и я поместил в него свой плагин:

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

Теперь я могу вызвать scalac следующим образом:

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

и он автоматически находит и использует мой плагин.

К сожалению, я просто не могу заставить Scala-IDE использовать его. Я всегда получаю Missing required plugin: scalawrapper. На вкладке «Свойства проекта\Scala Compiler (Использовать настройки проекта)\Дополнительно» я ввел scalawrapper в поле Xplugin-require, и это работает, так как я получаю сообщение об ошибке. Но ничего, что я могу ввести в Xpluginsdir, похоже, не имеет никакого эффекта.

Я пробовал абсолютный путь, указанный выше, пробовал с прямой и обратной косой чертой, пробовал временный каталог без пробелов в нем, пробовал относительно каталога проекта, пробовал относительно рабочей области. Просто ничего использовать не будет. Я также должен отметить, что это не относится к моему собственному плагину, поскольку я пытался использовать плагин ScalaCL раньше в предыдущей версии Scala-IDE и потерпел неудачу по той же причине.

Я только что обновился сегодня (15.10.2011), поэтому у меня должна быть последняя версия (кажется, я наконец-то могу явно установить отступ на 4, но, возможно, я просто пропустил настройку в прошлом).

Может ли кто-нибудь сказать мне, что он на самом деле ожидает, и что используется по умолчанию, когда я ничего не помещаю в Xpluginsdir?


person Sebastien Diot    schedule 21.10.2011    source источник


Ответы (1)


Scala IDE использует компилятор представления, а не установленный вами компилятор. Чтобы использовать плагин в Scala IDE, вам нужно указать его в настройках Eclipse.

Попробуйте Windows->Preferences->Scala->Compiler. См. вкладку «Дополнительно». Пути относятся к рабочему пространству.

РЕДАКТИРОВАТЬ: Когда я говорю относительно рабочей области, я имею в виду фактический каталог рабочей области, в котором хранятся .metadata ($workspace_loc). У меня есть проект, в котором файлы проекта, включая исходный код, хранятся в одном каталоге, а рабочая область находится в другом месте, т.е. $project_loc (c:\code\project\source) отличается от $workspace_loc (c:\code\project\workspace) . Каталог, который вы указываете в параметрах компилятора, относится к рабочей области ($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. Вышеуказанная конфигурация работает для меня.

person Matthew Farwell    schedule 21.10.2011
comment
Вы не прочитали мой вопрос. Я знаю, где находится этот параметр: в свойствах проекта\Scala Compiler (использовать настройки проекта)\вкладка "Дополнительно" единственная проблема в том, что ЭТО НЕ РАБОТАЕТ. - person Sebastien Diot; 21.10.2011
comment
Извините, я прочитал ваш вопрос, но я недостаточно ясно выразил то, что имел в виду. Я отредактировал ответ. - person Matthew Farwell; 22.10.2011
comment
Спасибо. Если я сделаю это точно так, как вы сказали, это, кажется, работает. Я думаю, причина, по которой я думал, что раньше это не сработало, заключалась в том, что Eclipse отбрасывает весь вывод (и System.out, и log(...)), так что похоже, что он ничего не сделал. Те же параметры, что и в scalac, ничего не делают в Eclipse. Мне пришлось создать исключение, чтобы доказать, что это работает, но это другая проблема, которую нужно решить в другом вопросе. Вы когда-нибудь узнавали, как использовать Xpluginsdir, чтобы вам не нужно было явно указывать банку? - person Sebastien Diot; 22.10.2011