如何排除conf文件夹下的文件进行分发?

时间:2014-06-23 22:29:57

标签: scala sbt playframework-2.3

我的Play 2.3应用程序中的application.dev.conf文件夹下有application.test.confconf,但我不希望将其打包为我的发行版的一部分?它的正确excludeFilter是什么?

3 个答案:

答案 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/。)