4

我有一个带有 jar 的外部 lib 目录。我需要将这些包含在我的类路径中以编译和测试我的项目,但我不想将它们包含在通过universal:packageBin(在sbt-native-packager中)生成的分布式 zip 文件中(或者dist如果您使用的是playframework.

我试图通过使用provided如下范围来做到这一点:

unmanagedBase in Provided := new java.io.File("/external/lib")

但这似乎并不像宣传的那样工作——这些罐子似乎没有包含在Compile范围内。

我正在使用 sbt 0.13.1

4

2 回答 2

3

这有效(感谢@jacek-laskowski 对我的回答的改进):

mappings in Universal :=  (mappings in Universal).value.filter { case(jar, _) => jar.getParentFile != unmanagedBase.value }

sbt但是,它仍然感觉像是一个杂物,如果(和sbt-native-packager)能够正确支持范围,我会更喜欢它,Provided因为这种情况正是它的意思。

于 2014-04-01T00:18:54.527 回答
1

我会提出以下解决方案:

mappings in Universal := (mappings in Universal).value filter { case (jar, path) => 
  jar.getParentFile != (unmanagedBase in Compile).value
}

mappings in Universal它可以通过 避免重复~=,但没有.value提供宏支持。

然而,我认为该解决方案是类型安全的,因为它使用设置的值unmanagedBase in Compilethat's java.io.File(不是java.lang.String容易出现拼写错误的)。

于 2014-04-03T09:40:49.770 回答