Как добиться независимого многомерного управления версиями с помощью плагина 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 (хотя я вообще не интересуюсь корнем)
  • SubA выпущен как 0.0.1
  • SubB выпущен как 0.0.4

и каждая версия добавляется, например, в SubA/version.sbt-> 0.0.2-SNAPSHOT

Как я могу это использовать sbt 0.13и sbt-releaseплагин?

sbt,sbt-release,

2

Ответов: 2


6

Вам необходимо переопределить местоположение по умолчанию файла version.sbt в каждом файле build.sbt вашего подмодуля:

import ReleaseKeys._

organization := "com.organization"

name := "moduleName"

version := (version in ThisBuild).value

scalaVersion := "2.11.6"

releaseSettings

versionFile := file(name.value + "/version.sbt")

По умолчанию версия.sbt находится в папке ROOT по sbt-release.


0

Создайте отдельный класс / объект и определите commonSettingsленивый val и установите version := {your_docker_version)там (вы можете переопределить это значение различными способами, например, с помощью System.property и т. Д.
Затем используйте эту общую настройку во всех своих модулях.

SBT, SBT-релиз,
Похожие вопросы