scala – 绘制sbt的增量编译逻辑
sbt维护任务之间的依赖关系,并且可以非常容易地推断出结果图.另一方面,略读源代码,似乎增量编译逻辑更加不透明.我希望能够做到以下几点:
>说相当于“如果我以这种方式修改了这个界面,会失效的是什么?” 这些都是可行的吗?我不反对写sbt插件,但会欣赏有关如何继续的提示. 编辑:它看起来像Relation的usesInternalSrc(dep:File):Set [File]可能很有希望.这是否捕获了所有sbt的依赖性知识? 编辑2:更有希望,在sbt源代码树中有一个DotGraph对象.它没有文档,谷歌没有任何人类可读的文字.如果我能弄清楚如何使用它,我会发一个答案. 解决方法
示例控制台项目会话:
> val (s,a) = runTask(compile in Compile,currentState) > DotGraph.sources(a.relations,file("source-graph"),Nil) source-graph是一个包含两个点文件的目录,一个包含源依赖项,另一个包含二进制文件.您也可以直接与问题中建议的Relations类型的关系进行交互,并且可以捕获所有sbt的依赖性知识.在0.13中,还将提供有关哪些依赖项继承自另一个源文件中的内容的信息. 就修改源文件如何影响失效而言,它非常粗糙.对任何非私有签名的任何更改都会将源标记为已更改.在0.12及更早版本中,这至少会使直接依赖性无效,甚至更多.在0.13中,这将仅使直接依赖项无效,但继承的依赖项除外,它们是传递无效的.当修改源文件的非私有API时,目前无法查看将失效的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |