【问题标题】:How to achieve indepedent multi module versioning with sbt-release plugin如何使用 sbt-release 插件实现独立的多模块版本控制
【发布时间】:2014-09-09 13:49:29
【问题描述】:

我有两个子项目和一个同意它们的顶级项目。 我可以成功发布所有这些,但只有顶级项目的版本发生了变化,并且子项目使用其目录中定义的版本发布,遗憾的是在发布期间没有更改。

Root
|
 -SubA
|   |- version.sbt -> version in SubA := "0.0.1-SNAPSHOT"
|
 -SubB
|   |- version.sbt -> version in SubB := "0.0.4-SNAPSHOT"
|- version.sbt -> version in ThisBuild := "0.1.0-SNAPSHOT"

发布后我想拥有:

  • 根发布为 0.1.0(虽然我根本不关心根)
  • SubA 发布为 0.0.1
  • SubB 发布为 0.0.4

每个版本都会增加,例如SubA/version.sbt -> 0.0.2-SNAPSHOT

如何使用sbt 0.13 和sbt-release 插件来做到这一点?

【问题讨论】:

    标签: sbt sbt-release


    【解决方案1】:

    您需要在子模块的每个 build.sbt 中覆盖 version.sbt 文件的默认位置:

    import ReleaseKeys._
    
    organization := "com.organization"
    
    name := "moduleName"
    
    version := (version in ThisBuild).value
    
    scalaVersion := "2.11.6"
    
    releaseSettings
    
    versionFile := file(name.value + "/version.sbt")
    

    默认情况下,version.sbt 位于 sbt-release 的 ROOT 文件夹中。

    【讨论】:

    • 为什么不versionFile := baseDirectory.value / "version.sbt"?
    【解决方案2】:

    创建一个单独的类/对象并定义一个commonSettings 惰性值,并在那里设置version := {your_docker_version)(您可以通过不同的方式覆盖此值,例如通过 System.property 等。
    然后在所有模块中使用这个 commonSettings。

    【讨论】:

      猜你喜欢
      • 2021-02-18
      • 2018-10-09
      • 2019-09-17
      • 2017-07-01
      • 2013-08-10
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多