scala – 绘制sbt的增量编译逻辑

发布时间:2020-10-21 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了scala – 绘制sbt的增量编译逻辑编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sbt维护任务之间的依赖关系,并且可以非常容易地推断出结果图.另一方面,略读源代码,似乎增量编译逻辑更加不透明.我希望能够做到以下几点:

>说相当于“如果我以这种方式修改了这个界面,会失效的是什么?”
>构建一个图表,说明修改不同类接口如何影响构建的其余部分.考虑到Scala中隐式依赖项的复杂程度,绘制scala导入依赖项并不是特别好的近似.似乎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时,目前无法查看将失效的内容.

总结

以上是编程之家为你收集整理的scala – 绘制sbt的增量编译逻辑全部内容,希望文章能够帮你解决scala – 绘制sbt的增量编译逻辑所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!