为SBT依赖项设置javac选项

时间:2014-01-25 12:50:19

标签: scala sbt javac

我在编译通过GIT加载的Java依赖项时遇到问题:

object ApplicationBuild extends Build {
  lazy val project = Project("root", file(".")).dependsOn(RootProject(riakJavaClient))

  lazy val riakJavaClient = uri("git://github.com/basho/riak-java-client")
}

我从sbt compile收到的错误是:

[info] Compiling 134 Java sources to /Users/lawrencewagerfield/.sbt/0.13/staging/da0e66c4764a467c8977/riak-java-client/target/scala-2.10/classes...
[error] /Users/lawrencewagerfield/.sbt/0.13/staging/da0e66c4764a467c8977/riak-java-client/src/main/java/com/basho/riak/client/cap/Quorum.java:22: error: unmappable character for encoding ASCII
[error]  * Riak 0.12 introduced ???symbolic??? consistency options for R and W 

SBT似乎正在执行javac,其编码与此依赖项中的源文件不兼容。

我已尝试将以下内容添加到build.sbt,但它没有效果(错误相同):

javacOptions ++= Seq("-encoding", "UTF-16") // Note: I have tried with UTF-8 too

上述内容仅适用于我项目中的源文件吗?知道如何通过这个问题吗?


TL; DR 如何使用正确的编码编译Java依赖项?

1 个答案:

答案 0 :(得分:10)

您是正确的,该设置仅适用于项目中的源文件。如果未指定范围的项目部分(这是典型的),则默认为封闭项目。要将设置应用于其他项目,请将其范围限定为该项目。例如,

javacOptions in riakJavaClient ++= Seq("-encoding", "UTF-8")

您可以验证您的选项是否与last一起使用。例如,

sbt> last compile

要从git在项目上运行上述命令,请使用project更改为该项目(有关详情,请参阅help project)。