Scala 分析sbt构建

Scala 分析sbt构建,scala,sbt,Scala,Sbt,我有一个sbt的建设,需要时间。它又大又复杂,很难知道从哪里开始清理。sbt似乎保留了很多关于构建结构的元数据,包括相互依赖性、命名任务、作用域等。有了所有这些元数据,就可以很容易地跳入并测量每个不同的任务(包括范围)所需的时间。在代码中而不是基于日志消息这样做不仅感觉更干净,而且具有很好地处理并发构建和其他可能导致日志时间误导的复杂内容的优势 目前是否有这样做的设施?这感觉不像是我们可以在“用户”构建中做的事情,但也许一个SBT插件可以钩住一个任务启动者,并在最后维护/生成一个关于时间安排的大

我有一个sbt的建设,需要时间。它又大又复杂,很难知道从哪里开始清理。sbt似乎保留了很多关于构建结构的元数据,包括相互依赖性、命名任务、作用域等。有了所有这些元数据,就可以很容易地跳入并测量每个不同的任务(包括范围)所需的时间。在代码中而不是基于日志消息这样做不仅感觉更干净,而且具有很好地处理并发构建和其他可能导致日志时间误导的复杂内容的优势


目前是否有这样做的设施?这感觉不像是我们可以在“用户”构建中做的事情,但也许一个SBT插件可以钩住一个任务启动者,并在最后维护/生成一个关于时间安排的大报告。这将真正有助于我集中精力改进缓慢的事情,而不会把时间浪费在瞬间发生的事情上。

不久前我也遇到过同样的问题。查看的源代码

这里是公告-注意SBT日志中的时间字段


很少有包装器+类似秒表的东西(在依赖项中),您将拥有具有评测统计信息的有吸引力的HTML报告。

谢谢!我试着阅读代码,但无法立即理解您正在做什么来实现这一点。您是否只是定义了一个规范化的项目结构,或者您是否找到了一种钩住sbt的方法,以便可以对任意sbt构建进行计时?我的问题是,我已经有了一个巨大的构建,我希望在不向每个任务(包括sbt的预定义任务)添加秒表调用的情况下对其进行评测。我在sbt/android/mill/mill.scala上定义了
totalStopwatch
profilingGroups
,并用
stopwatchGroup(“blablabla”){code}
包装了我自己的代码。我用评测(例如SBT/android/mill/compile/compile.scala)来包装一般的SBT任务,比如
compile in Configurations.compile如果你有非常复杂的项目,那么最好花点时间添加评测并对其进行优化,这样会一个月又一个月地浪费时间。我发现,即使对于实体项目,创建项目层次结构也非常方便。Scala多线程编译很弱,但每个子项目都是并行编译的。我问过SBT邮件列表中的并行编译,但没有办法进行优化。作为副作用,您可以在单个模块内提供更好的模块化。