Play 2.4.x - 资产复制

Posted

技术标签:

【中文标题】Play 2.4.x - 资产复制【英文标题】:Play 2.4.x - Assets duplication 【发布时间】:2016-06-02 17:28:48 【问题描述】:

在我正在处理的 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

第一个包含资产,因为它应该。第二个应该包含我的主要项目类文件,但它还有一个 META-INF/resources/webjars/myapp-server/0.9.6 文件夹,其中包含公共文件夹中的所有资产!

如果我使用PlayKeys.externalizeResources := true,我会得到完全相同的行为,但是myapp-server.myapp-server-0.9.6-externalized-resources.jar 中会出现额外的META-INF/resources 文件夹。

那么我怎样才能摆脱那个额外的资产文件夹呢?我有很多资产,所以额外的文件夹会大大增加包的大小......

【问题讨论】:

【参考方案1】:

经过一些研究,似乎只是从“外部化” jar 中排除了额外的文件夹:

mappings in (Compile, packageBin) ~=  (ms: Seq[(File, String)]) =>
    ms filterNot  case (file, dest) =>
        dest.contains("resources/webjars")
    

【讨论】:

以上是关于Play 2.4.x - 资产复制的主要内容,如果未能解决你的问题,请参考以下文章

Play Framework [2.4.x] - 模块路由特定名称因“资产不是包的成员”而失败

如何将 CDN 与 Play Framework 2.4 资产一起使用?

通过 Play 中的“activator run”运行时获取要编译的资产

关于 Google Play 应用资产加密的问题

在 Scala Play 框架 2.4 中使用两个资产目录

如何在 Play 2.3 中使用 publish/publishLocal 发布 webjar 资产?