我有一个带有jar的外部lib目录。我需要将这些包含在我的类路径中以编译和测试我的项目,但我不想将它们包含在通过universal:packageBin
生成的分布式zip文件中(在sbt-native-packager中)(或{{ 1}}如果你正在使用dist
。
我尝试使用playframework
范围执行此操作,如下所示:
provided
但这并不像宣传的那样有效 - 罐子似乎不会被包含在unmanagedBase in Provided := new java.io.File("/external/lib")
范围内。
我使用sbt 0.13.1 。
答案 0 :(得分:2)
这是有效的(感谢@ jacek-laskowski改进我的回答):
mappings in Universal := (mappings in Universal).value.filter { case(jar, _) => jar.getParentFile != unmanagedBase.value }
但是,它仍然感觉像一个kludge,如果sbt
(以及sbt-native-packager
)能够正确支持Provided
范围,我会更喜欢它,因为这个场景正是它的本质意思是。
答案 1 :(得分:1)
我建议采用以下解决方案:
mappings in Universal := (mappings in Universal).value filter { case (jar, path) =>
jar.getParentFile != (unmanagedBase in Compile).value
}
它复制mappings in Universal
可以通过~=
避免,但后来没有提供.value
宏支持。
我认为该解决方案不是类型安全的,因为它使用的unmanagedBase in Compile
设置为java.io.File
(不是java.lang.String
,而且容易出现拼写错误)。