我的Play 2.3应用程序中的application.dev.conf
文件夹下有application.test.conf
和conf
,但我不希望将其打包为我的发行版的一部分?它的正确excludeFilter
是什么?
答案 0 :(得分:3)
您可以使用mappings
排除这两个文件。
mappings in Universal := {
val origMappings = (mappings in Universal).value
origMappings.filterNot { case (_, file) => file.endsWith("application.dev.conf") || file.endsWith("application.test.conf") }
}
答案 1 :(得分:3)
实际上lpiepiora的答案可以解决问题,但是请注意,在mappings in Universal
上进行过滤只会将application.dev.conf
文件夹中的conf
排除在之外,而不是jar本身。
我不了解play
框架,但总的来说,如果您有这样的事情:
hello
├── src
│ └── main
│ ├── scala
│ │ └── com.world.hello
│ │ └── Main.scala
│ ├── resources
│ │ ├── application.dev.conf
│ │ └── application.conf
正在做
mappings in (Universal, ) ++= {
((resourceDirectory in Compile).value * "*").get.filterNot(f => f.getName.endsWith(".dev.conf")).map { f =>
f -> s"conf/${f.name}"
}
}
将产生以下包装结构:
hello/
├── lib
│ └── com.world.hello-1234-SNAPSHOT.jar
├── conf
│ └── application.conf
但是,如果您查看罐子,您将看到dev.conf
文件仍在其中:
$ unzip -v com.world.hello-1234-SNAPSHOT.jar
Archive: com.world.hello-1234-SNAPSHOT.jar
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
371 Defl:N 166 55% 10-01-2018 15:20 36c30a78 META-INF/MANIFEST.MF
0 Stored 0 0% 10-01-2018 15:20 00000000 com/
0 Stored 0 0% 10-01-2018 15:20 00000000 com/world/
0 Stored 0 0% 10-01-2018 15:20 00000000 com/world/hello/
0 Stored 0 0% 10-01-2018 15:20 00000000 com/world/hello/
13646 Defl:N 4361 68% 10-01-2018 12:06 7e2dce2f com/world/hello/Main$.class
930 Defl:N 445 52% 10-01-2018 13:57 5b180d92 application.conf
930 Defl:N 445 52% 10-01-2018 13:57 5b180d92 application.dev.conf
这实际上并不是很有害,但是如果您也想删除它们,答案是:How to exclude resources during packaging with SBT but not during testing
mappings in (Compile, packageBin) ~= { _.filter(!_._1.getName.endsWith(".dev.conf")) }
答案 2 :(得分:1)
以下excludeFilter
是否适合您?
excludeFilter in Universal in unmanagedResources := "application.dev.conf" || "application.test.conf"
(unmanagedResourceDirectories
密钥默认为conf/
。)