how to shade before compile with SBT?

左心房为你撑大大i 提交于 2019-12-01 03:35:52

As I said in the comments, I would take a different route. If you take on the dependencies as managed dependencies, you can shade them both in the library itself and inside your project.

Let's see an example:

Assume that I have a project which takes dependency on com.typesafe.config. I can shade it inside it's own library, meaning inside the code of com.typesafe.config, and also in the consuming library.

You define it like this:

assemblyShadeRules in assembly ++= Seq(
  ShadeRule.rename("com.typesafe.config.**" -> "my_conf.@1")
    .inLibrary("com.typesafe" % "config" % "1.3.0")
    .inProject
)

Which basically means "take anything that beings with com.typesafe.config and shade it to my_conf."

Note that we're using both inLibrary and inProject. The former means "change the package names inside com.typesafe.config" and inProject means "change all references to com.typesafe.config inside my code".

Now, the output of that looks like this:

This is how the package internally looks now (my_conf was originally com.typesafe.config before shading):

And this is the package your code will reference:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!