SBT:设置java.library.path的跨平台方式?

时间:2014-08-27 09:57:45

标签: scala sbt native java.library.path

我正在开发一个需要加载本机库的项目,到目前为止,所有开发仅限于Linux。为了run我的项目,我可以简单地启用分叉和修改java.library.path,如下所示:

javaOptions in run += "-Djava.library.path=some/common/path:lib/native/linux"

我的问题是:我如何以跨平台的方式做同样的事情,以便我可以与基于Windows的开发人员共享我的build.sbt。到目前为止,我还有三件事情无法解决:

  • 我知道SBT允许构建像"dir1" / "dir2"这样的平台无关路径,但我不知道加入多个路径的跨平台方式(因为它在Linux上是:而{ Windows上的{1}}。
  • 是否可以根据平台附加; lib/native/linux
  • 我上面的方法会覆盖lib/native/windows - 是否可以追加?

1 个答案:

答案 0 :(得分:5)

由于您可以使用任何Scala代码,您当然可以

val folderName =
  if (System.getProperty("os.name").startsWith("Windows")) "windows" else "linux"

val libPath = Seq("some/common/path", s"lib/native/$folderName").mkString(java.io.File.pathSeparator)

javaOptions in run += s"-Djava.library.path=$libPath"

虽然这并没有回答你的上一个问题。