Our project 主要由两部分组成
unmanagedJars
设置由根项目下的子项目依赖。 问题是如何在编译根项目之前组装着色项目。否则,根项目将无法编译,因为阴影 jar 中的那些类不可用。
最佳答案
正如我在评论中所说,我会采取不同的路线。如果您将依赖项视为托管依赖项,则可以在库本身和项目内部对它们进行着色。
让我们看一个例子:
假设我有一个依赖于 com.typesafe.config
的项目。我可以在它自己的库中对它进行着色,这意味着在 com.typesafe.config
的代码中,以及在消费库中。
你这样定义它:
assemblyShadeRules in assembly ++= Seq(
ShadeRule.rename("com.typesafe.config.**" -> "my_conf.@1")
.inLibrary("com.typesafe" % "config" % "1.3.0")
.inProject
)
这基本上意味着“将任何包含 com.typesafe.config
的包并将其着色为 my_conf
”。请注意,我们同时使用
inLibrary
和 inProject
。前者的意思是“在 com.typesafe.config
中更改包名和对它们的引用”,而 inProject
的意思是“在我的代码中更改对 com.typesafe.config
的所有引用”。现在,它的输出如下所示:
这就是包现在的内部外观(
my_conf
在着色之前最初是 com.typesafe.config
):这是您的代码将引用的包:
关于scala - 如何在使用 SBT 编译之前进行着色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40397065/