从sbt-native-packager中的universal:packageBin中排除非托管依赖项?

时间:2014-03-24 11:16:51

标签: playframework-2.0 sbt sbt-native-packager

我有一个带有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

2 个答案:

答案 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,而且容易出现拼写错误)。

相关问题