Visualizing dependency size via sbt assembly

Viewed 45

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.

2 Answers

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
Related