Tools for shading a Scala library?

To avoid runtime dependency conflicts, it is a common practice in Java land to shade dependencies into a different namespace. Scala uses @ScalaSignature annotation to store extra class/package info. This breaks the assumption of Java shading libraries.

ScalaShade updates the @ScalaSignature annotation in compiled Scala classes. However, it doesn’t cover all scenarios, e.g., package object. And it might break if Scala changes in the future.

Is it possible to have officials tools to shade a Scala library?

2 Likes