SBT:评估任务顺序

时间:2019-03-23 15:13:29

标签: scala sbt

我正在尝试获取有关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 的东西来将所有任务结果链接到一个。

1 个答案:

答案 0 :(得分:1)

Tasks中描述的一些功能可能会有所帮助。

首先,Dynamic Computation with Def.taskDyn允许您使用一个任务的结果来计算另一个任务。对于您来说,allModules应该是(Def.taskDyn { ... }).value

要在多个子项目中聚合任务,可以在任务键上使用ScopeFilter.all方法。