我的任务是将旧的 ant 构建脚本重写为 SBT。碰巧的是,我们的套件由 3 个模块组成:
- 一个 Play 2.3 前端网络服务器;
- 用于从其他各种系统检索数据的后端;
- 一个中间模块,包含一些用于数据库访问和业务逻辑的共享类。
下面是我的 Build.scala 文件的摘录:
val sharedSettings = Seq(
organization := <organization here>,
version := "1.2.5",
scalaVersion := "2.11.1",
libraryDependencies ++= libraries,
unmanagedJars in Compile ++= baseDirectory.value / "lib",
unmanagedJars in Compile ++= baseDirectory.value / "src",
unmanagedJars in Compile ++= baseDirectory.value / "test"
)
lazy val middle = project.settings(sharedSettings: _*)
lazy val back = project.settings(sharedSettings: _*).dependsOn(middle)
但是,当我尝试编译源代码时,出现以下错误:
在类文件“ValueConverter.class”中遇到对 scala.reflect.runtime 的错误符号引用。无法访问包 scala.reflect 中的术语运行时。当前类路径可能缺少 scala.reflect.runtime 的定义,或者 ValueConverter.class 可能已针对与当前类路径中找到的版本不兼容的版本进行编译。
源代码按以下结构组织:
- 背部
- 源代码
- 测试
- 库
- 中间
- 源代码
- 测试
- 库
- 正面
- 源代码
- 测试
- 库
这里每个 lib 文件夹都包含一些手动维护的库(这就是我们要迁移到 sbt 的原因)。
关于如何解决这个问题的任何想法?