我想要一个SBT任务,它将逗号分隔的测试类列表作为命令行的输入,由完全限定名称给出.现在我使用硬编码值运行任务但我想从命令行获取它.有人可以帮我写这样的任务吗?
lazy val runTask = inputKey[Unit]("custom run")
runTask := {
val one = (runMain in Compile).fullInput(" org.scalatest.tools.Runner -P1 -C reporter.TestReporter -o -s testcase.GetAccountInfo -s testcase.GetProfileInfo").evaluated
}
Run Code Online (Sandbox Code Playgroud)
像这样的东西,
sbt runTask testcase.GetProfileInfo,testcase.GetAccountInfo
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在使用SBT 0.13.2,我希望通过执行编译任务的方式触发我的任务.我知道我可以通过使用该triggeredBy
方法实现这一点,如taskDefinition.triggeredBy(compile in Compile)
.
我有一个build.sbt
与我的定义自定义任务.
问题是我无法理解为什么以下按预期工作
val triggeredTask = taskKey[Unit]("Triggered by compile")
triggeredTask <<= Def.task {
println("TRIGGERED BY COMPILE")
}.triggeredBy(compile in Compile)
Run Code Online (Sandbox Code Playgroud)
但是下一个不起作用(compile
执行得很好,但我的任务没有被触发)
val triggeredTask = taskKey[Unit]("Triggered by compile")
triggeredTask := Def.task {
println("TRIGGERED BY COMPILE")
}.triggeredBy(compile in Compile).value
Run Code Online (Sandbox Code Playgroud)
我的理解是,SBT 0.13 <<=
已经过时,:=
应该足够了.
Rust 有内置函数可以围绕空格分割字符串,例如:
let mut iter = " Hello world".split_whitespace();
assert_eq!(Some("Hello"), iter.next());
assert_eq!(Some("world"), iter.next());
Run Code Online (Sandbox Code Playgroud)
但是,我想要一种将字符串拆分为单词的方法,以及它们在字符串中的相应位置。
let mut iter = ??????(" Hello world");
assert_eq!(Some((1, "Hello")), iter.next());
assert_eq!(Some((7, "world")), iter.next());
Run Code Online (Sandbox Code Playgroud)
我完全不知道从哪里开始,因为:
内置的split
和split_whitespace
函数“消耗”空白,所以我不知道给定元素之前出现了多少空白。我应该从 开始split('')
,并以某种方式将非空白“分组”在一起吗?
有一个match_indices
函数可以执行类似的操作,但它只能查找给定的字符串或字符(使用闭包)。
有内置的东西吗?或者我需要迭代迭代std::str::Chars
器吗?
如果是这样,我将如何从Chars
给定字符的迭代器转到表示下一个单词的字符串?有没有一种安全的方法从函数返回它?(到目前为止,编译器从未让我这样做)