从5k行scala代码中提取50M jar文件是否合理?

从5k行scala代码中提取50M jar文件是否合理?,scala,jar,sbt,filesize,sbt-assembly,Scala,Jar,Sbt,Filesize,Sbt Assembly,到目前为止,我正在构建一个scala项目,共有约5k行代码。我正在用sbt汇编创建一个jar文件。它将达到50米,比我天真的预期要大得多。这是一个合理的尺寸还是听起来有点臃肿?我只是希望有一个粗略的指南。我的build.sbt如下所示。谢谢: ... scalaVersion := "2.11.6" scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8") resolvers ++= Seq(

到目前为止,我正在构建一个scala项目,共有约5k行代码。我正在用
sbt汇编
创建一个jar文件。它将达到50米,比我天真的预期要大得多。这是一个合理的尺寸还是听起来有点臃肿?我只是希望有一个粗略的指南。我的
build.sbt
如下所示。谢谢:

  ...

scalaVersion  := "2.11.6" 

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")

resolvers ++= Seq(
  "spray repo" at "http://repo.spray.io/",
  "Spray" at "http://repo.spray.io",      
  "Scalaz Bintray Repo" at "http://dl.bintray.com/scalaz/releases" 
)

libraryDependencies ++= {
  val akkaV = "2.3.10"
  val sprayV = "1.3.3"
  Seq(
    "io.spray"            %%   "spray-can"     % sprayV,
    "io.spray"            %%   "spray-routing-shapeless2" % sprayV,
    "io.spray"            %%   "spray-testkit" % sprayV,
    "io.argonaut"         %%   "argonaut"      % "6.0.4",
    "com.typesafe.akka"   %%   "akka-actor"    % akkaV,
    "com.typesafe.akka"   %%   "akka-slf4j"    % akkaV,
    "com.typesafe.akka"   %%   "akka-testkit"  % akkaV,
    "com.github.nscala-time" %% "nscala-time"  % "1.8.0",
    "com.wandoulabs.akka" %% "spray-websocket" % "0.1.4",

    "commons-codec"       % "commons-codec"    % "1.10",
    "com.amazonaws"       % "aws-java-sdk"     % "1.9.25",

    "com.typesafe.slick"  %% "slick" % "3.0.0",
    "mysql"               % "mysql-connector-java" % "5.1.35",

    "ch.qos.logback"      %   "logback-classic"   % "1.1.3",

    "io.reactivex"        %%  "rxscala"       % "0.24.1",

    "org.clapper"         %% "grizzled-slf4j" % "1.0.2"
  )
}

是的,这是合理的

当您使用
assembly
创建jar时,它会添加所有已编译依赖项的内容


您可以通过使用模块化依赖关系使其更小,例如,如果dynamo是您唯一使用的东西,那么依赖aws dynamo jar而不是所有aws。如何实现这一点或是否可以实现这一点将因库而异。

您依赖于许多库,这些库将与
程序集一起捆绑在最终的jar中。50MB是所有这些加上您的代码的总和。但我只是想弄清楚5000万美元是否是这个总数的合理预期。显然是的。谢谢,我现在不用担心了。我不确定使用模块化依赖关系来减少几%的工作量是否值得。我只是不想在将来的某个时候发现,我一直在无缘无故地携带大约10兆字节,只是因为我错过了一些标志设置。