小编Dav*_*gel的帖子

如何使用SBT和IntelliJ IDEA管理多个相互依赖的模块?

我正在开发几个具有依赖关系的模块,并希望在一个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项目,其中跟踪了子项目之间的依赖关系.但有两点需要注意:

  1. 这似乎是一个限制,子项目必须存在于主项目的子目录中(即,file("../foo")不允许).这不是我想要的(如果一个模块 - 例如"utils"或"commons"包 - 在两个不同的主项目中使用会怎么样?)但是我可以忍受它.
  2. 我的一个子项目有自己的子项目; 我不确定sbt本身是否正确处理这些嵌套项目,但无论如何它们都会被sbt-idea忽略.显然,我需要在主项目中递归地包含嵌套的子项目.

总结一下:我想将已经有子项目的模块收集到一个具有跟踪依赖关系的大型IDEA项目中,以方便编辑.我该怎么做?谢谢!

scala intellij-idea sbt sbt-idea

82
推荐指数
2
解决办法
1万
查看次数

如何从大型XML文档中获取流式迭代器[Node]?

我需要处理由大量独立记录组成的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树.但是,有一种我更容易被忽视的方式吗?感谢您的任何见解!

xml scala xml-parsing

9
推荐指数
2
解决办法
1630
查看次数

标签 统计

scala ×2

intellij-idea ×1

sbt ×1

sbt-idea ×1

xml ×1

xml-parsing ×1