/ / É um arquivo jar 50M razoável de 5k linhas de código scala? - scala, jar, sbt, filesize, sbt-assembly

Um arquivo jar de 50M é razoável de 5k linhas de código scala? - scala, jar, sbt, filesize, sbt-assembly

Eu estou construindo um projeto scala com ~ 5k linhas de código até o momento. Eu estou criando um arquivo jar com sbt assembly. Está saindo para a 50M, que é muito maior do que eu esperava ingenuamente. Isso é um tipo razoável de tamanho ou soa suspeitosamente inchado? Estou apenas esperando por um guia aproximado. build.sbt é como segue. Obrigado:

  ...

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"
)
}

Respostas:

2 para resposta № 1

Sim, isso é razoável.

Quando você faz um pote com assembly adiciona o conteúdo de todas as suas dependências compiladas.

Você poderia fazer isso menor usando modularDependências, eg dependem do aws-dynamo jar em vez de todas as aws se dynamo é a única coisa que você usa. Como você consegue isso ou se você pode variar de acordo com a biblioteca.