我正在尝试获取有关sbt项目中所有模块的信息。
具有以下代码
df_heatmap = df.pivot_table(values='score',index='Province',columns='Product type',aggfunc=np.mean)
sns.heatmap(df_heatmap,annot=True)
plt.show()
我遇到了错误:
lazy val getModule = taskKey[Module]("get single module info")
lazy val allModules = taskKey[Seq[Module]]("get all modules info")
getModule := Def.task {
Module(name.value, description.value, version.value, organization.value)
}.value,
allModules := Def.task {
val sbtModules = (ThisScope / thisProject).value.aggregate
sbtModules.map { m =>
(ThisScope.in(m) / getModule).value
}
}.value
sbt有什么可以动态链接任务的吗?
基本上,我正在寻找类似[error] problem: Task invocations inside anonymous functions are evaluated independently of whether the anonymous function is invoked or not.
...
[error] /Users/ikryvorotenko/projects/rae/rae-lib/project/SbtToGradlePlugin.scala:27:23: Illegal dynamic reference: m
[error] (ThisScope.in(m) / getModule).value
的东西来将所有任务结果链接到一个。
答案 0 :(得分:1)
Tasks中描述的一些功能可能会有所帮助。
首先,Dynamic Computation with Def.taskDyn允许您使用一个任务的结果来计算另一个任务。对于您来说,allModules
应该是(Def.taskDyn { ... }).value
。
要在多个子项目中聚合任务,可以在任务键上使用ScopeFilter和.all
方法。