Our project主要由两部分组成
unmanagedJars
设置来依赖。 问题是如何在编译根项目之前组装着色项目。否则,根项目将无法编译,因为着色jar中的那些类不可用。
答案 0 :(得分:7)
正如我在评论中所说,我会采取不同的方式。如果您将依赖项视为托管依赖项,则可以在库本身和项目内部对它们进行着色。
让我们看一个例子:
假设我有一个依赖于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
):
这是您的代码将引用的包: