【问题标题】:Ignore dependency jars on dist task忽略 dist 任务的依赖 jar
【发布时间】:2015-09-01 21:41:27
【问题描述】:

我有一个包含一些子项目的 Play 2.3.x 应用程序,我使用 dist 生成完整应用程序的 zip 包。

问题是这个包太大了,因为它包含了应用程序运行所需的所有依赖项(例如:scala、play libs、db driver(s)等),并且需要很长时间才能上传到服务器。

我想知道:是否可以告诉dist 任务忽略其中一些 jar 并且不将它们包含在生成的 zip 文件中?我们的想法是在服务器上拥有这些依赖项和一个自定义启动脚本,以将所有这些依赖项添加到类路径中,并且只使用我的代码/资产 jar 部署一个较小的 zip。

这可能吗?

【问题讨论】:

  • 已经有一个feature request 用于此。然而,关于打包什么和不打包什么是一件非常大而复杂的事情。作为第一步,我建议使用 proguard 之类的方法来减少类文件的数量。

标签: playframework sbt sbt-native-packager


【解决方案1】:

dist 任务来自sbt-native-packager。 Play 2.3 沿袭使用 0.7.4 版本。

如果您运行sbt show universal:mappings,您将获得项目中当前包含的所有内容的输出。因此,通过修改 mappings 键,您可以开始(小心地)过滤掉您想要的任何内容。

编辑:正如 Muki 在 cmets 中指出的那样,这是相关文档的 direct link

【讨论】:

  • 你能举个小例子吗(例如:在生成的包中只包含junit.junit-4.10.jar)?
  • 当然,有点匆忙,但有一种方法:github.com/Lykathia/ignore-sbt-dependencies
  • 有一些more documentation here。映射非常简单:source:File -> dest:String 元组。您可以根据需要过滤它们。例如。 mappings in Universal := (mappings in Universal).value.filter { case (source, dest) => dest contains "lib/" }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多