如何使用sbt-release插件实现独立的多模块版本控制

时间:2014-09-09 13:49:30

标签: sbt sbt-release

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

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"

发布后我想:

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

并且例如在SubA/version.sbt - >中增加每个版本。 0.0.2-SNAPSHOT

如何使用sbt 0.13sbt-release插件执行此操作?

2 个答案:

答案 0 :(得分:6)

您需要覆盖子模块的每个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文件夹中。

答案 1 :(得分:0)

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