3

我有一个多项目 sbt,我在其中使用 sbt-release 插件。如果我在子项目中运行发布,一切正常

> project reporter
[info] Set current project to reporter (in build file:/source/storage-integ/)
> release
[info] Starting release process off commit: c069698baf8bb6fca611ab4e7e086398aab473c5
[info] Checking remote [origin] ...

但是当我从 cli运行“ sbt Reporter/release ”时,这不起作用。“ sbt Reporter/compile ”或“ sbt Reporter/Assembly ”在哪里起作用。

$ sbt reporter/release
[warn] Executing in batch mode.
[warn]   For better performance, hit [ENTER] to switch to interactive mode, or
[warn]   consider launching sbt without any commands, or explicitly passing 'shell'
[info] Loading global plugins from /home/vagrant/.sbt/0.13/plugins
[info] Loading project definition from /source/storage-integ/project
[info] Set current project to root (in build file:/source/storage-integ/)
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: release (similar: releaseVcs, rpmRelease, rpm-release)
[error] reporter/release

这看起来与另一个 SO帖子非常相似。我尝试releaseSettings按照建议添加到 build.sbt 但它会引发错误

build.sbt:62: error: not found: value releaseSettings

我试过import sbtrelease.Release._了,但那会抛出

error: object Release is not a member of package sbtrelease

在这一点上,我觉得提到的解决方案不再有效。releaseSettings另外,我在 sbt-release 自述文件中没有看到任何参考。知道如何让它工作吗?

sbt.version = 0.13.15 && sbt-release: "1.0.6"

4

1 回答 1

0

发布设置应该只在您的root项目中。所以,为了拥有它:

首先,你build.sbt可能是这样的

lazy val root: Project = project.in(file("."))
  .settings(Releases.settings: _*)
  .aggregate(module1, module2)

然后,你project/Releases.scala喜欢:

object Releases {

 // You need to custom these to reflect your actual procedure
 private val releaseProcess = Def.setting {
   Seq[ReleaseStep](
    checkSnapshotDependencies,
    inquireVersions,          
    runClean,                 
    runTest,                  
    setReleaseVersion,        
    commitReleaseVersion,     
    tagRelease,               
    publishArtifacts,         
    setNextVersion,          
    commitNextVersion,       
    pushChanges          
   )
  }

  val settings = Seq(
    releaseCommitMessage := s"Set version to ${(version in ThisBuild).value}",
    releaseTagName := (version in ThisBuild).value,
    releaseProcess := releaseProcess.value
  )
}

默认情况下,您需要version.sbt使用当前版本。让我们说:

version in ThisBuild := "1.0.0-SNAPSHOT"

然后只是:

sbt 发布

于 2017-10-24T12:13:38.877 回答