3

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

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.13sbt-release插件做到这一点?

4

2 回答 2

7

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

于 2015-04-09T00:31:29.237 回答
0

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

于 2018-07-12T09:37:08.827 回答