在标准任务之前/之后自动运行自定义任务

2023-12-20

我经常想在运行其中一项标准任务之前进行一些自定义。我意识到我可以创建新任务,按照我想要的顺序执行现有任务,但我发现这很麻烦,而且开发人员错过他应该运行 my-compile 而不是编译的机会很大,并导致难以修复错误。

所以我想定义一个自定义任务(比如说准备应用程序)并将其注入到现有任务的依赖树中(比如包装箱)这样每次有人调用包装箱我的自定义任务就在它之前运行。

我尝试这样做

  def mySettings = {
    inConfig(Compile)(Seq(prepareAppTask <<= packageBin in Compile map { (pkg: File) =>
      // fiddle with the /target folder before package-bin makes it into a jar
    })) ++
    Seq(name := "my project", version := "1.0")
  }

  lazy val prepareAppTask = TaskKey[Unit]("prepare-app")

但它不会自动执行包装箱就在将编译输出打包到 jar 之前。那么如何更改上面的代码以在正确的时间运行呢?

更一般地说,我在哪里可以找到有关挂钩其他任务(例如编译)的信息,是否有一种通用方法可以确保您自己的任务在调用标准任务之前和之后运行?


扩展现有任务记录在 SBT 文档中Tasks http://www.scala-sbt.org/release/docs/Tasks.html(查看部分修改现有任务 http://www.scala-sbt.org/release/docs/Tasks.html#Modifying+an+Existing+Task).

像这样的事情:

compile in Compile <<= (compile in Compile) map { _ => 
  // what you want to happen after compile goes here 
}

实际上,还有另一种方法 - 定义你的任务依赖于编译

prepareAppTask := (whatever you want to do) dependsOn compile

然后修改 packageBin 以依赖于此:

packageBin <<= packageBin dependsOn prepareAppTask

(以上所有内容均未经测试,但我希望总体主旨应该有效)。

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

在标准任务之前/之后自动运行自定义任务 的相关文章

随机推荐

  • 为什么 java.util.Random 中没有接受绑定的 nextDouble()、nextFloat() 和 nextLong()

    我正在读书java util Random类并注意到没有nextDouble nextFloat and nextLong 它可以接受一个bound 有很多方法可以完成它像这样 https stackoverflow com questio
  • 为什么导出的HBase表比原来大4倍?

    我需要在更新到新版本之前备份 HBase 表 我决定使用标准将表导出到 hdfsExport http hbase apache org 0 94 book ops mgt html export工具 然后将其移动到本地文件系统 由于某种原
  • 如何对齐布局QHBoxLayout和QVBoxLayout?

    我想为我的窗口做这样的布局 所以我尝试创建一个QHBoxLayout布局放置 3 个按钮 并将其添加到QVBoxLayout usr bin python coding utf 8 import sys from PyQt4 import
  • goto 交叉初始化[重复]

    这个问题在这里已经有答案了 假设我有一些 C 代码 if error goto exit size t i 0 error size t i i 0 exit 我明白我们不应该使用goto 但仍然为什么 size t i i 0 编译而si
  • 使用 install4j 对 Linux 可执行文件进行代码签名

    我正在使用 Install4j 和 pfx 文件来为 Windows 安装程序 exe 提供数字签名 但我找不到任何方法为 Linux 安装程序 sh 提供数字签名 有什么方法可以使用 Install4j for linux 可执行文件来做
  • 如何使用javascript重置div中的滚动位置

    我正在开发移动混合应用程序 在我的 html 页面中 我有 3 个选项卡 单击选项卡时 可滚动 div 的内容会发生更改 我的问题是 当我向下滚动 div 视图 的内容并单击另一个选项卡时 内容消失 但内容在那里 请帮助我 以便我可以在单击
  • #!链接中的主题标签和感叹号作为文件夹?

    我怎样才能让我的页面像groveshark页面一样显示 http grooveshark com popular http grooveshark com popular有教程或其他东西知道如何通过 jQuery 或 JavaScript
  • 使 JList 值不可选择 [重复]

    这个问题在这里已经有答案了 我想知道如何修改JList这样单击任何值都不会执行任何操作 我看过其他问题 但没有一个有帮助 我通过使用以下类解决了这个问题 class DisabledItemSelectionModel extends De
  • Clojure 中的 = 和 ==

    在 REPL 上 如果我定义 def fits map vector take 10 iterate inc 0 然后打电话 2 nth fits 2 我变得虚假了 But 2 nth fits 2 返回真 这是预期的吗 我尝试了 clas
  • Android 蓝牙 java.io.IOException:连接被拒绝?

    我需要连接一个KwikBlue 2 模块开发套件 http www socketmobile com products embedded wireless communications kwikblue4 module 到安卓蓝牙聊天示例
  • 尝试向 Firestore 验证 Java 客户端时出现“凭据无法获取元数据”错误

    我把我的东西放在一起thought是你好世界火库Java 客户端身份验证 但它总是死掉 警告 您的应用程序已使用 Google Cloud SDK 中的最终用户凭据进行身份验证 我们建议大多数服务器应用程序使用服务帐户 如果您的应用程序继续
  • 插入 VARCHAR2 列时换行

    我有一个要求 我需要准备电子邮件数据 所以我填充将数据放入以 VARCHAR2 4000 作为定义的表列中 现在我想要的是 将其插入新行中任何我想要的位置 begin v email v email new line end 假设我正在一行
  • 使用jQuery控制视频标签

    因此 我想使用 jQuery 函数从链接的 REL 收集 URL 并将其传递给元素 收集 REL 并将其发送到 没有问题 但是从 jQuery 触发元素的加载和播放功能需要什么 这是我到目前为止所拥有的 function a compone
  • 如何在不换行的情况下执行“float: left”?

    我有一个容器box1具有一定的宽度 可能会根据其内容而变化 那个盒子里有box2它有固定的宽度 它可以是一个图标 旁边box2 我有box3带有一些文字 我希望文本使用右侧的所有可用空间box2 通过粘贴下面的 HTML 您将得到 到目前为
  • 替换先前 bash 命令中所有字符串的快捷方式

    man bash描述了一个非常有用的事件指示符 https www gnu org software bash manual bashref html Event Designators 字符串1 字符串2 快速替换 重复最后一个命令 将
  • 使用 HttpWebRequest 使用 multipart/form-data 发布数据/上传图像

    我正在尝试使用 ImageShack API 上传图像 要使用它 我应该POST图像使用multipart form data 我这样做就像 var postData var req HttpWebRequest Create http w
  • 错误:无法分配给引用或变量!角度 4 [重复]

    这个问题在这里已经有答案了 添加一些新的 html 代码后 我在 Angular 4 中遇到错误 之前表单工作正常 我尝试评论新代码 但它仍然不起作用 该怎么办 我研究了这个错误并尝试解决 但没有任何帮助 我也没有得到问题的确切位置 我的代
  • 在django中提交表单后重定向到索引页面

    除了添加产品数据后重定向回索引页面之外 一切正常 目前在我的数据保存后 它被重定向到127 0 0 1 8000 产品 add product add product 目前 当我的索引页面 add product html 加载时 我有一个
  • 后增量后 == 令人费解的行为[重复]

    这个问题在这里已经有答案了 有人在某个论坛帖子中假设 许多人甚至经验丰富的 Java 开发人员都无法理解下面的 Java 代码 Integer i1 127 Integer i2 127 System out println i1 i2 S
  • 在标准任务之前/之后自动运行自定义任务

    我经常想在运行其中一项标准任务之前进行一些自定义 我意识到我可以创建新任务 按照我想要的顺序执行现有任务 但我发现这很麻烦 而且开发人员错过他应该运行 my compile 而不是编译的机会很大 并导致难以修复错误 所以我想定义一个自定义任