我正在创建一个将修改compile:compile和test:test任务的插件。我的最终目标是能够sbt monkjack
或sbt monkjack:test
(两者都很好)。在compile:compile范围内我需要添加一个编译器插件,并且在测试中:测试范围我需要在测试完成后运行一些代码。
我的第一次尝试是尝试创建一个自定义配置,但扩展,编译或测试,不清楚,因为两者都需要(目前我有两个,我将CustomTest复制到CustomCompile然后运行monkjack:测试)。我的第二次尝试集中在一个自定义任务上,该任务在设置各种选项后依次调用(在Compile中编译).value和(test in Test).value。
我意识到我对SBT任务的了解以及它们如何相关/继承/作用域并不是很好。
Q1。是否有像maven一样的任务链?在maven中,如果执行test,它将按顺序执行其他阶段。所以mvn clean test会自动运行prepare-sources,compile等等。所以在SBT中,如果我运行sbt test
,其他任务如何自动执行。
Q2。如果您使用自定义配置执行任务,例如sbt millertime:test
该配置将传播到其他运行的任务。例如,这与sbt monkjack:compile monkjack:test
相同或与sbt compile monkjack:test
相同或两者都不相同:)
Q3。任务如何知道哪个是默认配置?如果我sbt compile
,SBT如何知道这意味着sbt compile:compile
?
Q4。这是最好的方式,自定义配置或新任务。