通过sbt插件添加库依赖项 – 每个子项目
|
我试图通过sbt插件添加库依赖项.应该根据每个子项目的二进制 scala版本将依赖项添加到每个子项目中,因此我遍历每个子项目. private def inject(): State => State = { state =>
val extracted: Extracted = Project.extract(state)
val enrichedLibDepSettings = extracted.structure.allProjectRefs map { projRef =>
val projectScalaVersion = (scalaBinaryVersion in projRef)
libraryDependencies in projRef +=
compilerPluginOrg % (compilerPluginArtifact + "_" + projectScalaVersion.value) % compilerPluginVersion % "provided"
}
val newState = extracted.append(enrichedLibDepSettings,state)
val updateAfterLibAppend = extracted.structure.allProjectRefs map { projRef =>
println("running update: " + EvaluateTask(extracted.structure,update,newState,projRef)) }
state
}
但是这不起作用 – 打印输出显示没有通过projRef =中的libraryDependencies附加的库依赖关系的跟踪,也没有发出任何错误,留下后续步骤来故障转移缺少的依赖项.这种技术可能有什么问题? 您会问为什么首先需要这个?为什么通过像这样的sbt插件添加库依赖? 虽然我们在sbt addCompilerPlugin中,它不能用于具有参数的编译器插件(-Xplugin带有jar的路径必须指定给scalac,因为它接受编译器插件参数,就实验而言).因此我们需要在将它解析为库依赖关系之后通过-Xplugin注入编译器插件(然后调整其文件路径位置以检查更新结果).因此我们需要通过sbt插件添加库依赖项.我们还需要为每个子项目执行此操作,因为多项目构建可能包含不同scala版本的子项目 – 每个项目都必须注入二进制兼容的编译器插件,以保持二进制兼容性. 顺便说一句,这可能会照亮我在黑暗中的事情: object Plugin extends AutoPlugin {
override lazy val projectSettings = Seq(
...
}
一对线索? >为每个子项目附加scalacOptions – 使用相同的技术 – 只是起作用. 这意味着您可以使用典型的设置/任务表示法在此处添加您的人工制品,例如: def projectSettings = Seq(
libraryDependencies += {
val bin = scalaBinaryVersion.value
...
}
)
请注意,这是=,而不是:=.这有帮助吗? (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
