背景:我有一个 Play 2.0 项目,我正在尝试在我的一些类(Java)上使用 jar 中的方面添加一些东西来做 aspectj 编织。(sbt-aspectj 似乎没有这样做,或者我看不出怎么做)。所以我需要添加一个自定义任务,并让它依赖于编译。我已经弄清楚了依赖部分。但是,因为我不知道自己在做什么,所以我想使用 IDE 开发它(我使用的是 Scala-IDE)。由于 sbt 项目(以及因此 Play 项目)是递归定义的,我认为我可以:
- 将eclipse插件添加到myplay/project/project/plugins.sbt
将 sbt 主 jar(和 aspectj jar)添加到 myplay/project/project/build.sbt:
libraryDependencies ++= Seq( "org.scala-sbt" % "main" % "0.12.2", "aspectj" % "aspectj-tools" % "1.0.6" )
进入 myplay/项目
- 运行 sbt,运行 eclipse 任务,然后将项目作为单独的项目导入到 eclipse 中。
我可以做到这一点,尽管 build.scala (和其他 scala 文件)最初并未被视为源代码,但我不得不稍微调整一下构建路径。然而,即使我已经为项目定义了 sbt main,eclipse IDE 和 compile 任务都会给出错误:
> 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 项目在其引用库中既没有显示 main 也没有显示 aspectj-tools。但是,如果我给它一个伪造的版本(例如 0.12.4),重新加载会失败,所以它似乎正在使用依赖项。
所以,... 首先:这是正确的方法吗?第二:如果是这样,为什么不添加库。(第三:请不要让这成为我错过的愚蠢。)