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

scala – 如何在SBT中切换项目和库依赖项?

发布时间:2020-12-16 09:54:22 所属栏目:安全 来源:网络整理
导读:在SBT中声明托管库依赖项很容易,例如 libraryDependencies ++= Seq( "org.specs2" %% "specs2" % "1.12.2" % "test","junit" % "junit" % "4.7" % "test") 虽然在SBT中声明项目依赖关系并不容易,但我也可以这样做: object RichMath extends Build { lazy va
在SBT中声明托管库依赖项很容易,例如

libraryDependencies ++= Seq(
 "org.specs2" %% "specs2" % "1.12.2" % "test","junit" % "junit" % "4.7" % "test"
)

虽然在SBT中声明项目依赖关系并不容易,但我也可以这样做:

object RichMath extends Build {
  lazy val myApp = Project("RichMath",file(".")) dependsOn(richUtil)   
  lazy val richUtil = RootProject(file("../RichUtil"))
}

但实际上,我通常希望在上游项目中立即可见变更的项目模式和库模式之间进行更改,我必须发布更改以在相关项目中查看它们,因为代码会成熟.

在代码库的早期阶段,或者每当我想要跨模块进行频繁更改时,我不希望重新发布的麻烦只是为了看到上游的变化.但是在稳定/成熟的代码中,我想确切地说明我依赖的版本.

似乎SBT将这两个依赖关系视为完全不同.是否有更直接的方式在项目和库依赖项之间切换而不是重写我的构建定义?

解决方法

我有一些关于我的sbt脚本(测试,发布,生产)的场景.我从脚本(从bash,你可能有其他环境)开始,例如DO = TESTS sbt.这是我对环境变量的动态依赖:

if (sys.env.contains("LOCAL_BUILD")) {
  Seq[Project.Setting[_]](
    unmanagedResourceDirectories in Compile <+= baseDirectory { _ / "src" / "main" / "scala" },libraryDependencies ++= {
      Seq(
        "org.digimead" %% "digi-lib-slf4j" % "0.2.1-SNAPSHOT" % "test","org.digimead" %% "digi-lib-test" % "0.2.1-SNAPSHOT" % "test","org.scalatest" %% "scalatest" % "1.9" % "test"
      )
    }
  )
} else {
  Seq[Project.Setting[_]](
   libraryDependencies ++= {
      Seq(
        "org.slf4j" % "slf4j-log4j12" % "1.7.1"
      )
    }
  )
}

如您所见,我可能有不同的项目设置,单个.sbt定义由一个环境变量控制.环境变量会影响所有项目/子项目.

(编辑:李大同)

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

    推荐文章
      热点阅读