Scala 将sbt多模块项目拆分为生成文件
我有一个多模块sbt项目,基本结构如下:Scala 将sbt多模块项目拆分为生成文件,scala,sbt,Scala,Sbt,我有一个多模块sbt项目,基本结构如下: - ProjectX -- project/ProjectXBuild.scala -- moduleA -- moduleB -- moduleC ... object ProjectXBuild extends Build { lazy val root: Project = Propject( .... ) aggregate(moduleA, moduleB, moduleC) lazy val moduleA: Proj
- ProjectX
-- project/ProjectXBuild.scala
-- moduleA
-- moduleB
-- moduleC
...
object ProjectXBuild extends Build {
lazy val root: Project = Propject( .... ) aggregate(moduleA, moduleB, moduleC)
lazy val moduleA: Project = Project(.....)
lazy val moduleB: Project = Project(.....)
...
现在,project/ProjectXBuild.scala将所有项目定义如下:
- ProjectX
-- project/ProjectXBuild.scala
-- moduleA
-- moduleB
-- moduleC
...
object ProjectXBuild extends Build {
lazy val root: Project = Propject( .... ) aggregate(moduleA, moduleB, moduleC)
lazy val moduleA: Project = Project(.....)
lazy val moduleB: Project = Project(.....)
...
我想做的是,将val的moduleA和moduleB移动到一个单独的文件中,因为ProjectXBuild对象变得越来越大
我可以将它们解压缩到modulebuild.scala的ProjectX/project目录中。但我想将它们转移到一个单独的包中,例如ProjectX/project/modules。这不起作用,sbt的编译类路径上似乎没有任何项目/子目录
我尝试使用sbt的递归特性来改变这一点,并在ProjectX/project/project/build.sbt文件中的类路径中附加一个project/modules目录,但我想我可能误解了项目/项目的目的,或者我做得不对
总而言之,是否可以从project/MassiveBuildFile.scala提取“素材”,例如project/a/modulebuild.scala和project/b/modulebuild.scala等
谢谢你的提示。我试着在github上查看各种项目,但即使是大量的scala代码,这似乎有点让我无法接受。您可以做的是将特定于子项目的设置
moduleA
放入ProjectX/moduleA/build.sbt
(或子项目目录中的任何*.sbt
文件)。您仍然需要在主*.sbt
或*.scala
构建文件中列出子项目,但是可以在每个子项目的构建文件中定义依赖项之类的内容。实际上,所有构建文件都将合并以创建单个构建,但设置的范围将正确地限定到每个子项目
另一方面,不可能在
ProjectX/moduleA/project/build.scala
或类似文件中定义设置。如果要在*.scala
文件而不是*.sbt
文件中定义设置,它们必须进入ProjectX/project/
。但是,您可以在项目目录中有几个*.scala
文件,这可能是模块化构建的另一种方式。好的,这一点在
及
所有源只需位于project/src/main/scala中即可