如何使用 sbt-release 插件实现独立的多模块版本控制 [英] How to achieve indepedent multi module versioning with sbt-release plugin

查看:47
本文介绍了如何使用 sbt-release 插件实现独立的多模块版本控制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a two sub-projects and top level project which agreegates them. I can successfully release all of them but only version on top level project is changed and sub-projects are released with the version defined in their directory which unfortunately is not changed during 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

and each version is incremeted for example in SubA/version.sbt -> 0.0.2-SNAPSHOT

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

How can I do that using sbt 0.13 and sbt-release plugin?

推荐答案

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

You need to override the default location of the version.sbt file in each build.sbt of your submodule:

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 文件夹中.

By default, version.sbt is located at the ROOT folder by sbt-release.

这篇关于如何使用 sbt-release 插件实现独立的多模块版本控制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆