I am using sbt assembly to package my project into one fat jar. I wanted to understand if I can visualize how much disk space is each dependency taking in my fat jar.
I am using sbt assembly to package my project into one fat jar. I wanted to understand if I can visualize how much disk space is each dependency taking in my fat jar.
AFAIK there is no "magic" in SBT assembly, meaning the whole content of each dependency JAR is added to the fat JAR. For instance no "tree shaking" like in other languages to remove unused classes.
Thus, one way to get what you're looking for is to package your project without assembly and look at the lib directory: each JAR used in the production code will be present and you can get its size.
Take a look at sbt-dependency-graph plugin.
sbt dependencyStats: Shows a table with each module a row with (transitive) Jar sizes and number of dependencies
➭ sbt dependencyStats
[info] TotSize JarSize #TDe #Dep Module
[info] 61.232 MB ------- MB 88 22 a-projects_2.13:0.1
[info] 22.995 MB 0.393 MB 25 8 client-a-akka_2.13:0.0.1
[info] 22.788 MB 0.186 MB 25 8 client-b-akka_2.13:0.0.1
[info] 19.593 MB 0.012 MB 16 3 de.heikoseeberger:akka-http-json4s_2.13:1.27.0
[info] 15.710 MB 0.176 MB 6 2 io.circe:circe-generic_2.13:0.14.1
[info] 12.429 MB 0.003 MB 7 2 io.circe:circe-parser_2.13:0.14.1
[info] 12.426 MB 0.029 MB 6 2 io.circe:circe-jawn_2.13:0.14.1
[info] 12.313 MB 1.116 MB 4 2 io.circe:circe-core_2.13:0.14.1
[info] 11.553 MB 4.749 MB 7 4 com.typesafe.akka:akka-stream_2.13:2.6.12
[info] 11.184 MB 5.915 MB 2 2 org.typelevel:cats-core_2.13:2.6.1
[info] 8.705 MB 2.855 MB 12 2 com.amazonaws:aws-java-sdk-ssm:1.12.210
[info] 7.818 MB 0.134 MB 12 4 net.codingwell:scala-guice_2.13:5.0.2
[info] 7.763 MB 1.257 MB 13 3 com.amazonaws:aws-java-sdk-s3:1.12.210
[info] 7.060 MB 1.848 MB 3 1 com.typesafe.akka:akka-http_2.13:10.2.3
[info] 6.841 MB 0.755 MB 7 7 com.typesafe.play:play-json_2.13:2.9.2
[info] 6.507 MB 0.656 MB 12 2 com.amazonaws:aws-java-sdk-kms:1.12.210
[info] 6.001 MB 0.151 MB 12 2 com.amazonaws:aws-java-sdk-sts:1.12.210
[info] 5.823 MB 1.044 MB 10 7 com.amazonaws:aws-java-sdk-core:1.12.210
[info] 5.262 MB 5.262 MB 0 0 org.typelevel:cats-kernel_2.13:2.6.1
[info] 5.211 MB 4.207 MB 2 2 com.typesafe.akka:akka-http-core_2.13:10.2.3
[info] 5.013 MB 0.013 MB 5 2 com.github.pureconfig:pureconfig-enumeratum_2.13:0.17.1
[info] 4.598 MB 3.663 MB 2 2 com.typesafe.akka:akka-actor_2.13:2.6.12
[info] 4.546 MB 0.000 MB 5 2 com.github.pureconfig:pureconfig_2.13:0.17.1
[info] 4.545 MB 0.140 MB 4 3 com.github.pureconfig:pureconfig-generic_2.13:0.17.1
...
[info] Columns are
[info] - Jar-Size including dependencies
[info] - Jar-Size
[info] - Number of transitive dependencies
[info] - Number of direct dependencies
[info] - ModuleID