SBT:评估任务顺序

2024-01-25

我正在尝试获取有关 sbt 项目中所有模块的信息。

有以下代码

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

我收到错误:

[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

sbt 有什么东西可以动态链接任务吗? 基本上我正在寻找类似的东西Future.sequence用于将所有任务结果链接到一个。


中描述了一些功能Tasks https://www.scala-sbt.org/1.x/docs/Tasks.html这可能会有所帮助。

First, 使用 Def.taskDyn 进行动态计算 https://www.scala-sbt.org/1.x/docs/Tasks.html#Dynamic+Computations+with允许您使用一项任务的结果来计算另一项任务。就你而言,allModules应该(Def.taskDyn { ... }).value.

要跨多个子项目等聚合任务,您可以使用范围过滤器 https://www.scala-sbt.org/1.x/docs/Tasks.html#ScopeFilter and .all任务键上的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SBT:评估任务顺序 的相关文章

随机推荐

  • 在使用 PKCE 的 OAuth 2.0 授权代码流程中,是什么阻止在第一次调用身份验证服务器时拦截代码质询?

    想象一下这次攻击 攻击者拦截对授权服务器的第一次调用 然后进行代码挑战 图中的步骤1 攻击者现在使用授权代码拦截来自授权服务器的响应 图中的步骤2 然后攻击者可以 POST 授权代码和代码验证程序来获取访问令牌 步骤3 Refer to t
  • Haml - 非法嵌套:纯文本中的嵌套是非法的

    我在使用 HAML 时遇到代码中的奇怪错误 其中我的代码在本地计算机上运行 但当我部署它时 出现以下错误 ActionView Template Error 非法嵌套 在纯文本中嵌套是非法的 我的代码看起来像这样 td style gt w
  • 使用日期的 For 循环编译错误:语法错误

    我正在尝试运行一个脚本 该脚本将浏览特定列的所有行 然后它将这些列中的日期与设定的日期进行比较 如果日期大于则删除该行 我收到的错误称为编译错误 语法错误 Sub removewrongyear Dim i As Integer For i
  • 预编译头文件和普通包含文件

    使用预编译头时 当我在常规头中包含一个已经包含在预编译头中的头时 是否会产生影响 或产生不良影响 或者换句话说 当我在另一个头文件中包含头 x 并同时在我的预编译头文件中包含 x 时 这是否会阻止预编译头提供的优化发挥作用 No 一般来说
  • 如何正确应用RGBA_8888和抖动?

    我有带有渐变的splash png 但在屏幕上这个图像看起来不太好 我的简单 apk这个问题包括 public class TestditherActivity extends Activity Override public void o
  • 替换文本文件中的一行

    我有一个文本文件 被另一个应用程序用作配置文件 我已将文件的每一行读入字符串数组 string arrLine File ReadAllLines pathToFile 这正是我需要的 现在 我需要做的就是用字符串替换 arrLine x
  • 如何从角度材料日期选择器获取当前时间?

    我正在使用角度材料日期选择器https material angular io components select overview https material angular io components select overview
  • 在CMake项目下编译单个文件?

    我正在开发一个 C 项目 该项目将包含在一个更大的项目中 我已经看到 在更大的项目 是一个 Qt 应用程序 它是从 qmake 生成的 上 我可以从 linux 命令行编译单个文件 只需输入特定文件的相对路径作为 make 的参数 另一方面
  • 尝试将实体编码为 json 时出现问题

    我尝试将 Doctrine 实体编码为 JSON 字符串 以作为 Ajax 响应发送 所以 我检查了文档 串行器组件 http symfony com doc current components serializer html 我尝试使用
  • Vue.js 空过滤结果

    在 Vue 中 我必须过滤一些数据
  • Swift3随机扩展方法

    我使用这个扩展方法来生成随机数 func Rand range Range
  • 从使用 atexit() 注册的函数内部获取退出状态

    在我的里面atexit 注册函数我想获得退出状态 参数exit 3 或者 main 返回了什么 有没有任何便携式方法可以做到这一点 是否有任何 GNU libc 特定的方法可以做到这一点 例如我可以引用的全局持有该值 这是一个技巧 hack
  • 如何将图片上传到另一台服务器?

    我想创建一个提供 html 内容的应用程序服务器 其中包含由不同域上的另一台服务器提供的静态图像的链接 图片由用户通过应用服务器上传 我将执行以下操作将 JPEG 文件上传到应用程序服务器 if file exists folder nam
  • TFS 构建失败,但 Visual Studio 可以工作

    我做了一个新的构建定义 大多数选项保留默认值 我暂时只是玩玩而已 问题是 当我在 Visual Studio 2013 中以发布模式构建项目时 一切都很好 没有错误 当 TFS 构建它时 我遇到了一些错误 我必须将其从我自己的语言翻译成英语
  • 如何在滚动视图中调整图像视图的大小,就像在此图像中完成的那样?

    我创建了一个滚动视图 并在其中放置了一个图像视图 我希望滚动它以与下图中相同的方式调整大小 但到目前为止我还没有取得什么成功 在我的尝试中 图像在滚动时调整了大小 但是调整大小后仍有剩余空间 您将如何修改以下内容 Image 到目前为止我的
  • JS 中的 Excel PMT 函数

    我在互联网上找到了一个关于 PMT 计算的小片段 function PMT i n p return i p Math pow 1 i n 1 Math pow 1 i n function CalculatePMTFromForm idL
  • 如何在多个显示器上最大化窗口?

    使用 AutoHotkey 如何绑定热键以在多个显示器上拉伸 最大化 跨越窗口 以便它覆盖两个显示器 现在 我必须通过用鼠标手动拉伸窗口来完成此操作 我知道有专用工具可以执行此操作 但我已经在运行 AutoHotkey 脚本 并且宁愿限制我
  • SOQL python 中的通配符

    我正在尝试使用 simple salesforce 包使用 python 从 salesforce 进行查询 当我使用通配符时 它会抛出故障错误 soql SELECT FROM Contact where LastModifiedDate
  • Protractor 的 waitForAngular() 在 angular-webapp 上失败(真实设备上的 appium/chrome)

    我 新 使用量角器来运行 e2e 黄瓜测试 我有一个基于 angularJS 的网络应用程序 我正在使用 appium 在真实的 Android 设备上远程运行测试 这是我正在使用的版本 windows8 1 email protected
  • SBT:评估任务顺序

    我正在尝试获取有关 sbt 项目中所有模块的信息 有以下代码 lazy val getModule taskKey Module get single module info lazy val allModules taskKey Seq