播放 2.4.x - 资产复制
Play 2.4.x - Assets duplication
在我正在处理的 Play 2.4.6 应用程序中,资产在 stage/dist 任务中被复制。
基本上它是一个包含 3 个子模块的应用程序,所有资产都位于主 public
文件夹中。我没有启用 sbt-web
并且没有 webjars 依赖项(但从 jar 内容来看,Play 可能在某处使用它们)。
如果我使用 PlayKeys.externalizeResources := false
,我最终会在 lib
文件夹中得到两个 jar 文件:
- myapp-server.myapp-server-0.9.6-assets.jar
- myapp-server.myapp-server-0.9.6.jar
第一个包含资产,因为它应该。第二个应该包含我的主项目 class 文件,但它还有一个 META-INF/resources/webjars/myapp-server/0.9.6
文件夹,其中包含 public 文件夹中的所有资产!
如果我使用 PlayKeys.externalizeResources := true
,我会得到完全相同的行为,但是额外的 META-INF/resources
文件夹出现在 myapp-server.myapp-server-0.9.6-externalized-resources.jar
中。
那么我怎样才能摆脱那个额外的资产文件夹呢?我有很多资产,所以额外的文件夹会增加很多包的大小...
经过一些研究,似乎只从 "externalized" jar 中排除额外的文件夹是可行的:
mappings in (Compile, packageBin) ~= { (ms: Seq[(File, String)]) =>
ms filterNot { case (file, dest) =>
dest.contains("resources/webjars")
}
}
在我正在处理的 Play 2.4.6 应用程序中,资产在 stage/dist 任务中被复制。
基本上它是一个包含 3 个子模块的应用程序,所有资产都位于主 public
文件夹中。我没有启用 sbt-web
并且没有 webjars 依赖项(但从 jar 内容来看,Play 可能在某处使用它们)。
如果我使用 PlayKeys.externalizeResources := false
,我最终会在 lib
文件夹中得到两个 jar 文件:
- myapp-server.myapp-server-0.9.6-assets.jar
- myapp-server.myapp-server-0.9.6.jar
第一个包含资产,因为它应该。第二个应该包含我的主项目 class 文件,但它还有一个 META-INF/resources/webjars/myapp-server/0.9.6
文件夹,其中包含 public 文件夹中的所有资产!
如果我使用 PlayKeys.externalizeResources := true
,我会得到完全相同的行为,但是额外的 META-INF/resources
文件夹出现在 myapp-server.myapp-server-0.9.6-externalized-resources.jar
中。
那么我怎样才能摆脱那个额外的资产文件夹呢?我有很多资产,所以额外的文件夹会增加很多包的大小...
经过一些研究,似乎只从 "externalized" jar 中排除额外的文件夹是可行的:
mappings in (Compile, packageBin) ~= { (ms: Seq[(File, String)]) =>
ms filterNot { case (file, dest) =>
dest.contains("resources/webjars")
}
}