2017-10-13 20 views
0

私はsbt-releaseプラグインを使用するマルチプロジェクトsbtを持っています。私は、サブプロジェクトサブプロジェクトのcliからsbtリリースタスクを実行できません

> 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の記者が/解放」を実行する場合、これは動作しません。どこか "SBTレポーター/アセンブリ" 仕事をする "SBTレポーター/をコンパイルする" など。

$ 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 postと非常によく似ています。私が示唆したようにbuild.sbtするreleaseSettingsを追加しようとしたが、それは私がimport sbtrelease.Release._を試みたが、それは私が言及したソリューションは、もはや有効では感じない。この時点で

error: object Release is not a member of package sbtrelease 

をスローエラー

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

をスローします。また、sbt-releaseのreadmeにreleaseSettingsの参照がありません。どのようにこれを得るために任意のアイデア?

sbt.version = 0.13.15 & & SBT-リリース: "1.0.6"

答えて

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すべてのサブプロジェクトが同じリリースの手順を持っています。このアプローチでは

+0

を解放言うことができます。私は1つのリリースステップが異なる2つのサブプロジェクトを持っています。 Module1はjarファイルをアップロードし、module2はドッカーコンテナを作成してrepoにプッシュします。そのため、私は、各サブプロジェクトのリリースタスクを実行する方法が必要であり、サブプロジェクト/ build.sbtでリリース手順の異なるシーケンスを定義する必要があります – Cheeko

関連する問題