scala – 如何指定构建项目另一个项目B必须先建立?
假设我公司的一个人有一个名为commons的sbt项目,这个项目很通用.该项目以传统的sbt方式定义:在主文件夹中,在项目/ Build.
scala文件中具有构建定义.
现在另外一个人正在开发一个名为数据绑定的项目,这个项目取决于公共资源.我们想用项目/ Build.scala以相同的方式定义这个项目. 我们有以下目录布局: dev/ commons/ src/ *.scala files here... project/ Build.scala databinding/ src/ *.scala files here... project/ Build.scala 如何指定数据绑定需要首先构建公共文件,并使用输出类文件? 我读了Multi-project builds,并提出了以下数据绑定的构建定义: object MyBuild extends Build { lazy val root = Project(id = "databinding",base = file(".")) settings ( // ... omitted ) dependsOn (commons) lazy val common = Project(id = "commons",base = file("../commons") ) } 除了它不工作:sbt不喜欢..并抛出一个AssertionError.显然,commons应该是数据绑定中的一个文件夹.但是这两个项目保存在单独的git存储库中,我们无法嵌套. 如何正确地指定这种依赖关系? 解决方法
您需要在根项目(或任何名称,但这一个适合)中定义将在dev / project / Build.scala中定义的多项目.
object RootBuild extends Build { lazy val root = Project(id = "root",base = file(".")) .settings(...) .aggregate(commons,databinding) lazy val commons = Project(id = "commons",base = file("commons")) .settings(...) lazy val databinding = Project(id = "databinding",base = file("databinding")) .settings(...) .dependsOn(commons) } 另外一件事,SBT不支持子项目中的* .scala配置文件.这意味着您必须将您在commons / project / Build.scala和databinding / project / Build.scala上进行的配置迁移到commons / build.sbt和databinding / build.sbt中. 如果您的某些配置不适用于.sbt定义文件,则必须将其添加到根项目/ Build.scala中.显然,root.scala中定义的设置在* .sbt文件中可用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |