Безопасно ли исключать зависимость scala -compiler.jar из пути к классам во время выполнения? - PullRequest
1 голос
/ 18 февраля 2020

scala-compiler.jar размер относительно большой 10 МБ. Часто это зависимость provided, означающая, что она не попадает в жирную банку после сборки, например, в бесформенном , circe , play- json, et c,

"org.scala-lang" % "scala-compiler" % scalaVersion.value % "provided"

С другой стороны, уточнил попытался сделать это provided однако они, похоже, обратились

scalaOrganization.value % "scala-compiler" % scalaVersion.value,

AFAIU, provided означает что-то вроде

  • нужно только во время компиляции и не будет частью толстой фляги времени выполнения, потому что это не нужно во время выполнения
  • нужно как во время компиляции, так и во время выполнения, но не будет частью толстой фляги, поскольку ожидается, что контейнер / платформа предоставит ее

Если scala-compiler используется только для компиляции время макроса расширения, кажется, должно быть безопасно удалить его из среды выполнения? Как мы можем узнать, безопасно ли исключить scala-compiler из среды выполнения, скажем,

"ai.x" %% "play-json-extensions" % "0.30.1" exclude("org.scala-lang", "scala-compiler")

или даже более резко

assemblyExcludedJars in assembly := {
  val excludedDeps = List(
    "scala-compiler"
  )
  (fullClasspath in assembly)
    .value
    .filter(dep => excludedDeps.exists(dep.data.getName.contains))
}

Причина запроса: AWS lambdas размер пакета развертывания limit

50 MB (zipped, for direct upload)
250 MB (unzipped, including layers)

и наши Scala lambdas достигают предела размера.

...