Предыстория: у меня есть проект Play 2.0, и я пытаюсь добавить что-то, чтобы сделать плетение аспектов, используя аспекты в банке на некоторых из моих классов (Java). (кажется, что sbt-aspectj этого не делает, или я не понимаю, как это сделать). Поэтому мне нужно добавить пользовательскую задачу и сделать так, чтобы она зависела от компиляции. Я вроде понял часть зависимости. Однако, поскольку я еще точно не знаю, что делаю, я хочу разработать это с помощью IDE (я использую Scala-IDE). Поскольку проекты sbt (и, следовательно, проекты Play) определяются рекурсивно, я предположил, что смогу:
- Добавьте плагин eclipse в myplay/project/project/plugins.sbt.
Добавьте основной jar-файл sbt (и jar-файл аспекта) в myplay/project/project/build.sbt:
libraryDependencies ++= Seq( "org.scala-sbt" % "main" % "0.12.2", "aspectj" % "aspectj-tools" % "1.0.6" )
Загляните в myplay/project
- Запустите sbt, запустите задачу eclipse, затем импортируйте проект в eclipse как отдельный проект.
Я могу это сделать, хотя файл build.scala (и другие файлы scala) изначально не считается исходным кодом, и мне приходится немного возиться с путем сборки. Однако, несмотря на то, что у меня есть основной sbt, определенный для проекта, как eclipse IDE, так и задача компиляции дают ошибки:
> compile
[error] .../myplay/project/Build.scala:2: not found: object keys
[error] import keys.Keys._
[error] ^
[error] .../myplay/project/SbtAspectJ.scala:2: object Configurations is not a member of package sbt
[error] import sbt.Configurations.Compile
[error] ^
[error] .../myplay/project/SbtAspectJ.scala:3: object Keys is not a member of package sbt
[error] import sbt.Keys._
[error] ^
[error] three errors found
Проект eclipse не показывает ни основных, ни аспектных инструментов в своих ссылочных библиотеках. Однако, если я дам ему поддельную версию (например, 0.12.4), перезагрузка завершится ошибкой, поэтому, похоже, она использует зависимость.
Итак,... Во-первых: это правильный способ сделать это? Во-вторых: если да, то почему не добавляются библиотеки. (Третье: пожалуйста, не считайте это глупостью, которую я пропустил.)