繁体   English   中英

如何自动聚合大型SBT项目中的所有子项目而无需编写大的“聚合”?

[英]How to auto-aggregate all subprojects in a large SBT project without having to write a large “aggregate”?

在我的SBT项目中,我有一个明确聚合所有内容的根项目,如下所示:

lazy val root = project.in(file(".")).
  settings(
    name := "awesome_project",
    publishArtifact := false
  ).
  aggregate(
    some_project,
    some_other_project,
    a_cool_library,
    // lots and lots and lots more
  )

由于我每次添加新项目时都明确要将每个项目添加到aggregate ,有没有办法自动完成? 目前我使用shell脚本查找包含lazy valproject所有行,输出每个名称后面带逗号的列表,然后将此列表复制粘贴到aggregate ,但我认为必须有一个更简单的方法做这个。

我没有尝试过它用于项目,但是在这种情况下你可以检查反射是否有帮助:

protected val prjs = this.getClass.getDeclaredFields.flatMap { f =>
    f.setAccessible(true)
    f.get(this) match {
      case p@Project => Some(f.asInstanceOf[Project])
      case _ => None
    }
  }.map(x => Project.projectToRef(x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM