scala – 使用SBT“RootProject”中的常用设置
发布时间:2020-12-16 21:31:27 所属栏目:安全 来源:网络整理
导读:https://stackoverflow.com/a/21605652/1737727的答案显示如何覆盖从主项目中使用RootProject定义的子项目的一个设置.我想知道是否有一个很好的方法来做这个多重设置,然后可能有多个子项目,所以你不必单独列出每个组合.这将是为了防止扩散,并减少遗忘组合的
https://stackoverflow.com/a/21605652/1737727的答案显示如何覆盖从主项目中使用RootProject定义的子项目的一个设置.我想知道是否有一个很好的方法来做这个多重设置,然后可能有多个子项目,所以你不必单独列出每个组合.这将是为了防止扩散,并减少遗忘组合的机会,并意外地设置不一致.
当不使用RootProject时,SBT docs显示如何使用常见的设置顺序进行操作: lazy val commonSettings = Seq( organization := "com.example",version := "0.1.0",scalaVersion := "2.11.8" ) lazy val core = (project in file("core")). settings(commonSettings: _*). settings( // other settings ) lazy val util = (project in file("util")). settings(commonSettings: _*). settings( // other settings ) 但是RootProject没有设置其设置的方法.根据上面提到的答案,我尝试过如下所示: lazy val util = RootProject(file("../util")) commonSettings.map(_.key).foreach(key => key in util := key.value) 但这似乎不是正确的方法. 我已经研究了使用全局或ThisBuild范围,但每个子项目设置在自己的build.sbt文件中,如果我理解正确,这将优先于这些更广泛的范围. 有没有一个很好的方法来做到这一点,还是应该手动设置每个子项目的每个设置?我应该使用不同的范围,例如子项目在Global中定义其设置,并在ThisBuild中定义主项目? 解决方法
你可以这样做:
commonSettings.map { s => s.mapKey(Def.mapScope(_.in(util))) } 这将创建新的Seq [设置[_]],其中每个设置的作用域都更改为在util项目中.这是一个sbt文件中的有效条目. 另一个选择是定义一个sbt插件,您添加到您的主要项目和RootProject自己的build.sbt 但是,如果您真的需要将util项目导入RootProject而不是常规子项目,那么您可能需要考虑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- scala – 使用命令行中的参数运行SBT任务
- mongodb – mongod –bind_ip使用docker-compose版本2
- scala – 更新Delta Data的Spark Dataframe的窗口函数row_n
- 什么时候在Scala中将我的方法视为部分应用的功能?
- ifconfig command not found
- 十分钟完成Bash 脚本进阶!列举Bash经典用法及其案例
- Angular 4.x LocationStrategy
- bootstrap confirm 插件 bootboxjs
- 斯卡拉 – 在阿卡有一个主演员是强制性的吗?
- Bootstrap学习笔记 15 - List Groups