4

次のbuild.sbtファイルがあります。

version := "0.0.1"

version in Test := "0.0.1-DEBUG"

name <<= (version) apply { v:String => "demo-%s".format(v) }

バージョンは「テスト」構成で正しいように見えますが、

> show test:version
[info] 0.0.1-DEBUG

名前は、より具体的な設定を見ていないようです。

> show name
[info] demo-0.0.1
> show test:name
[info] demo-0.0.1

これは明らかに、私が実際にやろうとしていることの非常に単純化された例ですが、問題/誤解を示していると思います.

編集 (2013-07-04) : 私が実際にやろうとしているのはjavaOptionsIntegrationTest構成を変更することです (b/c サービスをスピンアップし、それに対してテスト コードを実行します。テスト中のサービスを実行したいと思います)わずかにサンドボックス化されたモードで)。設定javaOptions in IntegrationTestは簡単です(そして確認します)が、使用するように明示的に定義する手間をかけない限りshow it:java-options、実際には慣れません。最も具体的な依存変数を好むと予想していました。runnerit:runnerit:java-options*:runner

4

2 に答える 2

2

@MarkHarrahによって提案された使用するBuild.scala翻訳は次のとおりです。inConfig

import sbt._
import sbt.Keys._

object DemoBuild extends Build {

  val mySettings = Seq(
    name <<= version { v => "demo-%s".format(v) }
  )

  lazy val demo = Project(
    id = "demo",
    base = file("."),
    settings = Project.defaultSettings ++ Seq(
      organization := "com.demo",
      scalaVersion := "2.10.0",
      version := "0.0.1",
      version in Test <<= version { v => "%s-DEBUG".format(v) }
    ) ++ mySettings
      ++ inConfig(Test)(mySettings)
  )
}
于 2013-07-05T00:51:01.023 に答える
2

これを sbt 0.11 と 0.12.1 で試してみたところ、うまくいきました:

version := "0.0.1"

version in Test := "0.0.1-DEBUG"

name <<= (version) apply { v:String => "demo-%s".format(v) }

name in Test <<= (version in Test) apply { v:String => "demo-%s".format(v) }

アップデート

Build.scala ファイルを使用している場合は、このタスクをプロジェクト間で一般化できます。次に例を示します。

import sbt._
import sbt.Keys._

object DemoBuild extends Build {

  lazy val demo = Project(
    id = "demo",
    base = file("."),
    settings = Project.defaultSettings ++ Seq(
      organization := "com.demo",
      scalaVersion := "2.10.0"
    ) ++ addNameAndVersion("0.0.1", "demo")
  )


  def addNameAndVersion(projectVersion:String, projectName:String):Seq[sbt.Project.Setting[_]] = {
    Seq(
      version := projectVersion,
      version in Test :=  projectVersion + "-DEBUG",
      name <<= version.apply(s => "%s-%s".format(projectName, s)),
      name in Test <<=  (version in Test).apply(s => "%s-%s".format(projectName, s))
    )
  }

}
于 2013-07-03T01:29:26.990 に答える