gpt4 book ai didi

sbt - 使用自定义任务调用子项目的 main

转载 作者:行者123 更新时间:2023-12-04 18:36:57 27 4
gpt4 key购买 nike

我有一个项目为一堆项目执行集成测试,这些项目都捆绑在同一个多项目构建中。集成测试通过常规的 main ( object Runner extends App ) 运行。

我希望能够通过名为 integrationTest 的任务或命令从多项目构建的根项目运行它。 ,所以我尝试:

val integrationTest = taskKey[Unit]("Executes integration tests.")

lazy val root = (project in file(".")).aggregate(projIntegrationTest, projA, projB, ...).settings(
integrationTest := (run in Compile in projIntegrationTest).value
)

当我发出 integrationTest 时什么都不做在提示下,只发出:

[success] Total time: 0 s, completed Oct 23, 2015 12:31:21 AM



当我的自定义任务 integrationTest 时,我该如何找出为什么它没有运行?跑?

奇怪的是,替换 runcompilepublishlocalintegrationTest := (run in Compile in projIntegrationTest).value上面,我的自定义任务行按预期运行,并在执行自定义任务时负责编译或发布。

最佳答案

它不起作用,因为 runInputTask ,不是常规 Task .

你需要做:

integrationTest :=
(run in Compile in projIntegrationTest)
.toTask("").value

这在 http://www.scala-sbt.org/0.13/docs/Input-Tasks.html 的“从 InputTask 中获取任务”部分有介绍。 .

从 sbt 0.13.13 开始,您的代码给出:
warning: `value` is deprecated for an input task. Use `evaluated` or `inputTaskValue`.

这是一个很好的改进; sbt 的早期版本让这一切都过去了,因此很难进行故障排除。 (但请注意,弃用消息提出了与我在此处使用的解决方案不同的解决方案;我还没有调查这种差异。有人可以对此有所了解吗?)

关于sbt - 使用自定义任务调用子项目的 main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33291071/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com