sbt:子项目的动态聚合

2023-11-22

我想发明一个系统动态发现子项目并将它们自动聚合到我的项目中。或者至少以某种方式配置它。

为此,我计划拥有一个“模块”文件夹或包含模块路径的可选配置文件。

无论如何我需要循环遍历子文件夹(或循环遍历配置文件中的路径列表),并汇总每个子项目。我不知道该怎么做。

目前我正在 Play 框架中构建build.sbt文件。我需要添加这样的循环:

name := "mysite"
version := "1.0"
scalaVersion := "2.11.1"
lazy val root = (project in file(".")).enablePlugins(PlayJava)
//pseudocode:
foreach( folder in the 'modules' folder) { 
  lazy val module = (project in file(folder)).enablePlugins(PlayJava)
  root = root.dependsOn(module).aggregate(module)
}

有没有办法做到这一点?

编辑3: 这里的代码几乎可以工作:

object MyBuild extends Build {
  name := "mysite"
  version := "1.0"
  scalaVersion := "2.11.6"

  var m = new File("modules")
  var list = Seq[ProjectReference]()
  var deps = Seq[ClasspathDependency]()
  if (m.exists) {
    val subs = m.listFiles.filter ( _.isDirectory ).foreach { folder =>
      var modulePath = new File("modules", folder.getName)
      println("Found module " + modulePath)
      lazy val module:ProjectRef = ProjectRef(modulePath,folder.getName)
      lazy val dep:ClasspathDependency = ClasspathDependency(module, None)
      list = list :+ module
      deps = deps :+ dep
    }
  }

  lazy val root = Project(id = "mysite", base = file(".")).enablePlugins(PlayJava).aggregate(list:_*).dependsOn(deps:_*)
}

Edit 4:

请参阅下面 Dale Wijnand 的解决方案。

关于错误:RuntimeException: No project 'myModule' in 'file:/Users/me/mysite/modules/myModule'。我使用以下解决方案解决了这个问题https://stackoverflow.com/a/28820578


Here:

项目/Build.scala

import sbt._
import sbt.Keys._

import play.sbt._
import play.sbt.Play.autoImport._

object Build extends Build {
  val commonSettings: Seq[Setting[_]] = Seq(
    scalaVersion := "2.11.7"
  )

  lazy val modules = (file("modules") * DirectoryFilter).get.map { dir =>
    Project(dir.getName, dir).enablePlugins(PlayJava).settings(commonSettings: _*)
  }

  lazy val root = (project in file("."))
    .enablePlugins(PlayJava)
    .settings(
      name := "mysite",
      version := "1.0"
    )
    .settings(commonSettings: _*)
    .dependsOn(modules map (m => m: ClasspathDependency): _*)
    .aggregate(modules map (m => m: ProjectReference): _*)

  override lazy val projects = root +: modules
}

注意,确保模块目录不包含build.sbt将它们定义为项目的文件,因为这会导致混乱RuntimeException: No project 'x' in 'file:/x'类型异常,请参阅无法将 sbt 0.13.7 与 Play 子项目一起使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sbt:子项目的动态聚合 的相关文章

  • SBT Scaladoc 配置

    我正在尝试在 SBT 中配置 Scaladoc 特别是标题 输出目录和类路径 我通过将以下内容添加到 build sbt 来定义标题 scalacOptions in Compile doc Opts doc title Scala Too
  • PlayFramework 2.4 在应用程序启动后运行一些代码

    在 play 2 4 中 重写 ApplicationLoader 中的构建器方法或在 Abstract 模块中实现 EagerBinding 替换现有的 play 2 3 GlobalSettings onStart 然而 在 play
  • 在游戏框架中编写功能测试的正确方法

    在为基于 play1 2 4 的 web 应用程序编写功能测试时 我对如何正确编码感到有点困惑 困惑在于所涉及的事务边界 我在某处读到每个测试都有自己的事务 在我的应用程序中 用户可以登录并向购物车添加一些商品 然后他可以提供一个地址 以便
  • Play框架:读取包含空值的Json

    我正在尝试在 Play Scala 程序中读取 Json 数据 Json 的某些字段可能包含空值 因此我定义 Reads 对象的方式如下 implicit val readObj Reads ApplyRequest JsPath a re
  • 尝试创建 jar 时出现 UNRESOLVED DEPENDENCIES 错误

    我正在尝试构建一个 Scala jar 文件以在 Spark 中运行它 我正在关注这个tutorial http spark apache org docs latest quick start html 当尝试使用 sbt 作为构建 ja
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • WSClient - 打开的文件太多

    我正在 CentOS 6 上使用 Play Framework 2 4 我的应用程序抛出此异常 java net SocketException Too many open files 我在 Stack Overflow 上搜索了很多主题并
  • 播放 2.0 如何使用 WS.url 或 WS.WSRequest 发布 MultipartFormData

    在 Java Http 请求中 我们可以这样做来进行多部分 HTTP POST HttpClient httpclient new DefaultHttpClient HttpPost httppost new HttpPost url F
  • SBT - 使用汇编时多项目合并策略和构建 sbt 结构

    我有一个由多个较小项目组成的项目 其中一些项目相互依赖 例如 有一个依赖于 commons 项目的实用程序项目 其他项目可能依赖于公用事业或公共设施 也可能不依赖于两者 在 build sbt 中 我在文件末尾有程序集合并策略 以及程序集中
  • Play Framework 嵌套表单错误缺失

    我将 Play Framework 2 3 与 Java 结合使用 并且委员会及其记录的会议日期之间存在以下一对多关系 Entity public class Committee Id protected Long id OneToMany
  • 如何强制依赖特定版本?

    依赖bar依赖于取决于foo1 2 3 但是那个版本foo有一个错误 我需要使用版本 1 2 2 我可以这样做force libraryDependencies foo foo 1 2 2 force 该方法不被推荐docs http ww
  • 为什么 junit 测试不使用“sbt test”执行?

    我正在将 sbt 版本 0 13 2 与纯 java 项目一起使用 My build sbt其中有以下行 libraryDependencies Seq com novocode junit interface 0 10 test 我的测试
  • formFactory.form() 不存在!游戏框架

    我有一个小问题 我想创建一个网络应用程序 并且我通过 java 文档学习 PlayFramework 这个示例代码 public Result hello DynamicForm requestData formFactory form b
  • 部署解耦的前端+后端应用程序

    我使用两个完全解耦的组件编写了一个网络应用程序 一个基于 Place Framework 并服务以下请求的 API 类型 api 任何客户 基于解耦的前端AngularJS建造使用grunt build 现在 前端与API但我希望这两个单元
  • scala sbt 在多项目上测试运行设置和清理命令一次

    我知道我可以通过修改 testOptions 在 sbt 中添加设置和清理代码以用于测试阶段 例如 val embedMongoTestSettings Seq Setting Seq testOptions in Test Tests S
  • 如何在Dotty中使用given?

    我在看Dotty下的文档Contextual Abstractions页面 我看到了Given Instances 给定实例 或者简单地 给定 定义了 规范 值 用于合成给定子句的参数的某些类型 例子 trait Ord T def com
  • SBT 0.13.x 中的触发执行

    我正在使用 SBT 0 13 2 我想通过执行编译任务的方式触发我的任务 我知道我可以通过使用来实现这一点triggeredBy方法 如taskDefinition triggeredBy compile in Compile 我有一个bu
  • 在 Scala 和 SBT 中调试较长的编译时间

    在我的 Scala SBT 项目中 我有一个文件需要 5 分钟才能编译 所有其他的都可以在几秒钟内编译 这使得开发非常痛苦 我确信我滥用了一些 Scala 构造 但我不知道如何调试它 如何在 Scala 中调试较长的编译时间 我正在使用 S
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • sbt 使用不同选项编译任务

    我有一个基本的 sbt 项目 我想用相同的源文件打包两个 jar 但使用不同的选项进行编译 因此 一个项目 2 个编译 但具有不同的选项 scalacOptions 和 2 个 jar 作为输出 我不想执行 sbt 两次 更改选项 有人有想

随机推荐

  • UICollectionView 滚动很慢

    我刚刚创建了一个UICollectionView其中用户可以将手机中的图像添加到应用程序的相册功能中 我将图像保存到文档目录中的子目录中 以便可以添加和删除更多图像 但是 当我上下滚动集合视图时 它非常滞后 怎样才能让滚动条又漂亮又流畅呢
  • “点击恢复”暂停文本 SpriteKit

    我知道 SpriteKit 已经处理了当应用程序进入非活动状态时暂停游戏的问题 但我想做的是在应用程序重新进入活动状态时添加一个 SKLabelNode 点击恢复 现在它正在正确调用我的函数并暂停游戏 但文本没有显示 AppDelegate
  • 具有多个自变量的 Python curve_fit

    蟒蛇的curve fit计算具有单个自变量的函数的最佳拟合参数 但是有没有办法使用curve fit或者其他什么 以适应具有多个自变量的函数 例如 def func x y a b c return log a b log x c log
  • 如何检测实体 EntityState 的更改?

    我想在客户列表的每一行上放置一个 删除 按钮和一个 取消 按钮 当客户 未更改 时 取消 按钮将被禁用 但是 当客户转换到更改状态 已添加 已修改 已删除 时 我想启用 取消 按钮 以便用户可以在保存之前撤消更改 无论它们是什么 我几乎可以
  • 如何防止 PHP DOMDocument“修复”您的 HTML 字符串

    我一直在尝试使用 HTML DOM 对象来解析网页 以便将它们用于应用程序来扫描它们的 SEO 质量 但是我遇到了一些问题 出于测试目的 我编写了一个小型 HTML 页面 其中包含以下不正确的 HTML 正如您所看到的 标题位于 head
  • EF Core 多个导航属性产生循环依赖

    我有以下映射配置 入门级 entity HasOne e gt e CurrentHandling WithOne HasForeignKey
  • Django 多处理和数据库连接

    背景 我正在开发一个使用 Django 和 Postgres 数据库的项目 我们还使用 mod wsgi 以防万一 因为我的一些网络搜索提到了它 在提交 Web 表单时 Django 视图启动一项需要花费大量时间 超过用户想要等待的时间 的
  • 当我们创建空的不可变列表/集合/映射时,是否有任何实际应用/用例

    Java 9 提供了一种创建空不可变列表 集合和映射的方法 List list List of Set set Set of Map map Map of 但我无法理解创建空的不可变列表 集合 映射的实际用例是什么 请帮助我理解空的不可变列
  • 如何在 Zend Framework 2 中引导会话

    在 Zend Framework 2 中启动和运行会话的最佳方法是什么 我尝试过设置session start 在我的 index php 文件中 但随后在引导任何自动加载器之前运行该文件 导致我的会话中存在不完整的对象 在 ZF1 中 您
  • C# - 如何打印宽高比/整页

    我正在单击按钮时打印图表控件 chart1 SaveImage ms ChartImageFormat Bmp Bitmap bm new Bitmap ms PrintDocument doc new PrintDocument doc
  • 如何覆盖 setup.py 默认使用的编译器 (GCC) 标志?

    我明白那个setup py使用相同的CFLAGS用于构建 Python 我有一个我们的 C 扩展存在段错误 我需要构建它without O2因为 O2正在优化一些值和代码 以便核心文件不足以确定问题 我只需要修改setup py以便 O2未
  • 如何从 Java 中的 URL 读取图像?

    我的 Web 应用程序中有提供图像的 servlet 当我使用浏览器图像访问这些 url 时 服务器是正确的 然后我有另一个调整图像大小的 servlet 想法是通过调整大小 servlet 中的 url 访问获取图像 然后调整图像大小 但
  • 最佳实践 - 使用 Symfony 2 删除链接

    在 Symfony 2 中 创建删除记录的链接的最佳方法是什么 我可以定义一条路线 entity delete只接受一个DELETE方法 但我不知道如何创建DELETE来自模板的链接 创建也是同样的道理PUT links 所以你会怎么做 接
  • 如何找到循环图中两个节点之间的最长路径?

    我已经解决了大部分发布的问题here 除了最长的路径之外的所有路径 我读过关于最长路径的维基百科文章 如果图是非循环的 这似乎很容易出现问题 而我的不是 那我该如何解决这个问题呢 通过检查所有可能的路径进行暴力破解 我该如何开始这样做呢 我
  • Microsoft SQL Server“Express”版本可以免费开发吗?

    我可以在 Microsoft SQL Server 2005 2008 Express 版数据库上免费开发软件吗 是的你可以 但 Express 版本有一些限制 SQL Server 一次仅使用一个 CPU 最大内存为1GB 数据库大小限制
  • 为什么 C++ 编译器不优化结构数据成员的读写而不是不同的局部变量?

    我正在尝试创建一些 POD 值的本地数组 例如double 与固定max size在编译时已知 然后读取运行时size value size lt max size 并首先处理size该数组中的元素 问题是 为什么编译器不消除堆栈读写arr
  • Java 位图字体:用不同颜色位图传输 1 位图像

    我想在基于 Java AWT 的应用程序中实现一个简单的位图字体绘制 应用程序借鉴了Graphics对象 我想在其中实现一个简单的算法 1 加载文件 可能使用ImageIO read new File fileName 这是 1 位 PNG
  • 为什么 UserManager.CreateIdentityAsync() 正在寻找 IdentityRole 以及如何修复?

    我在用着身份2 0 with MVC5 代码优先我已经延长了IdentityUser and IdentityRole像这样 public class ApplicationUser IdentityUser Required String
  • 键盘可访问的网络下拉菜单?

    有没有办法在网站上构建键盘可访问的下拉菜单 我们当前的 Web 应用程序具有标准的悬停菜单 但这确实减慢了我们的数据输入职员的速度 他们习惯于桌面应用程序 其中有键盘可访问的菜单 无需使用鼠标 我们弄清楚了如何使用键盘快捷键显示菜单 但我不
  • sbt:子项目的动态聚合

    我想发明一个系统动态发现子项目并将它们自动聚合到我的项目中 或者至少以某种方式配置它 为此 我计划拥有一个 模块 文件夹或包含模块路径的可选配置文件 无论如何我需要循环遍历子文件夹 或循环遍历配置文件中的路径列表 并汇总每个子项目 我不知道