加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何指定构建项目另一个项目B必须先建立?

发布时间:2020-12-16 09:13:55 所属栏目:安全 来源:网络整理
导读:假设我公司的一个人有一个名为commons的sbt项目,这个项目很通用.该项目以传统的sbt方式定义:在主文件夹中,在项目/ Build. scala文件中具有构建定义. 现在另外一个人正在开发一个名为数据绑定的项目,这个项目取决于公共资源.我们想用项目/ Build.scala以相同
假设我公司的一个人有一个名为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文件中可用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读