我正在开发几个具有依赖关系的模块,并希望在一个IDEA项目中一起使用它们.我正在使用sbt-idea从sbt构建定义生成IDEA项目,这对于单个项目非常有用.然而,在多模块的情况下,到目前为止我尝试过的东西并不是很有效:
使用sbt-idea独立生成每个模块的IDEA .iml文件 ; 然后从头开始创建一个主IDEA项目,并将这些模块添加到它.这使得模块源可以在同一个窗口中编辑,但是它们之间的依赖关系没有被跟踪(因此尝试从foo项目中的某些源导航到bar中的某些内容会将我带到导入的库版本的bar,而不是本地源).
使用sbt 多项目构建(也称为子项目),其中父项目的Build.scala包含以下内容:
lazy val foo = Project(id = "foo", base = file("foo"))
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo)
Run Code Online (Sandbox Code Playgroud)
这几乎可以工作,因为sbt-idea生成了一个主IDEA项目,其中跟踪了子项目之间的依赖关系.但有两点需要注意:
file("../foo")
不允许).这不是我想要的(如果一个模块 - 例如"utils"或"commons"包 - 在两个不同的主项目中使用会怎么样?)但是我可以忍受它.总结一下:我想将已经有子项目的模块收集到一个具有跟踪依赖关系的大型IDEA项目中,以方便编辑.我该怎么做?谢谢!
我需要处理由大量独立记录组成的XML文档,例如
<employees>
<employee>
<firstName>Kermit</firstName>
<lastName>Frog</lastName>
<role>Singer</role>
</employee>
<employee>
<firstName>Oscar</firstName>
<lastName>Grouch</lastName>
<role>Garbageman</role>
</employee>
...
</employees>
Run Code Online (Sandbox Code Playgroud)
在某些情况下,这些只是大文件,但在其他情况下,它们可能来自流媒体源.
我不能只是scala.xml.XmlLoader.load()它因为我不想把整个文件保存在内存中(或者等待输入流关闭),当我只需要处理一个记录时时间.我知道我可以使用XmlEventReader将输入作为一系列XmlEvents流式传输.然而,这些比scala.xml.Node更不方便使用.
所以我想以某种方式得到一个懒惰的Iterator [Node],以便使用方便的Scala语法对每个单独的记录进行操作,同时保持内存使用受控制.
为此,我可以从XmlEventReader开始,在每个匹配的开始和结束标记之间建立事件缓冲区,然后从中构建一个Node树.但是,有一种我更容易被忽视的方式吗?感谢您的任何见解!