Playframework 2.0 是否从sbt native packager中的universal:packageBin排除非托管依赖项?

Playframework 2.0 是否从sbt native packager中的universal:packageBin排除非托管依赖项?,playframework-2.0,sbt,sbt-native-packager,Playframework 2.0,Sbt,Sbt Native Packager,我有一个带有JAR的外部lib目录。为了编译和测试我的项目,我需要将它们包含在我的类路径中,但我不想将它们包含在通过universal:packageBin(在中)生成的分布式zip文件中(如果您使用的是playframework),或者dist 我试图通过使用提供的范围来实现这一点,如下所示: unmanagedBase in Provided := new java.io.File("/external/lib") 但这似乎不像宣传的那样有效——JAR似乎没有包含在编译范围内 我正在使用s

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

我试图通过使用提供的
范围来实现这一点,如下所示:

unmanagedBase in Provided := new java.io.File("/external/lib")
但这似乎不像宣传的那样有效——JAR似乎没有包含在
编译
范围内

我正在使用sbt0.13.1

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


但是,这仍然感觉像是一个难题,如果
sbt
(以及
sbt原生打包机
)能够正确地支持
提供的
范围,我更愿意这样做,因为这个场景正是它的目的所在。

我将提出以下解决方案:

mappings in Universal := (mappings in Universal).value filter { case (jar, path) => 
  jar.getParentFile != (unmanagedBase in Compile).value
}
它复制了Universal
中的
映射,这可以通过
~=
避免,但是没有提供
.value
宏支持


不过,我认为该解决方案是类型安全的,因为它在Compile
设置中使用了
unmanagedBase的值,即
java.io.File
(而不是
java.lang.String
,它容易出现打字错误)。

请尝试在packageBin:=File(/external/lib)中使用
unmanageBase
不幸的是,@laughedelic,这将DEP从编译范围中删除-我仍然需要它们:(Compile:=file(“/external/lib”)中没有
unmanageBase)
Compile
scope和
packageBin
任务的帮助?如果没有,您可以分别设置这两个任务。抱歉,您误解了-我希望在编译(和测试)中使用umanaged JAR但我不想让它们包含在二进制发行版中。我基本上是在尝试复制maven中提供的作用域。有人知道怎么做吗?我会避免使用
!\uu 1
,并用
{case(x,y)if…=>…}
替换
过滤器中的谓词。
mappings in Universal := (mappings in Universal).value filter { case (jar, path) => 
  jar.getParentFile != (unmanagedBase in Compile).value
}