こんにちは私は組織内の統合テストを処理するSBTビルドファイルを持っています。テスト自体は機能しており、別々のユニットを実行してテストできます。私はコンパイルするとき、それはメモリの外に出るので、両方の試験順次(単位++、それを)実行することはできませんよSBT-アセンブリとアプリケーションをパッケージ化するときしかし、ここでsbt.Projectは、その設定である:統合テストを使用したsbtアセンブリ
import BuildSettings._
import Dependencies._
import Resolvers._
val name = "api"
lazy val api = Project(
name, file("."),
settings = buildSettings
++ Seq(resolvers := repositories, libraryDependencies ++= dependencies)
++ SbtStartScript.startScriptForClassesSettings
++ Revolver.settings
++ assemblySettings
++ Seq(jarName := name + "-" + currentGitBranch + ".jar")
).configs(IntegrationTest)
.settings(Defaults.itSettings: _*)
.settings(parallelExecution in IntegrationTest := false)
.settings(parallelExecution in Test := true)
.settings(scalaSource in IntegrationTest := baseDirectory.value/"src/test/scala")
.settings(resourceDirectory in IntegrationTest := baseDirectory.value/"src/test/resources")
.settings(
testOptions in IntegrationTest := Seq(Tests.Filter(itFilter)),
testOptions in Test := Seq(Tests.Filter(unitFilter))
)
.settings(parallelExecution in Compile := true)
.settings(fork in Compile := true)
.settings(sources in (Compile, doc) := Seq.empty)
.settings(test in assembly := Seq(
(test in Test).value ,
(test in IntegrationTest).value
))
def currentGitBranch = {
"git rev-parse --abbrev-ref HEAD".lines_!.mkString.replaceAll("/", "-").replaceAll("heads-", "")
}
def itFilter(name: String): Boolean = name endsWith "IT"
def unitFilter(name: String): Boolean = !itFilter(name)
あなたが見ることができるように私は使用(アセンブリ内でテストを:= {...})私はsbt assembly
を実行した場合しかし、それは私が使用してみました
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:GC overhead limit exceeded
で失敗し、タスクアセンブリ::テスト中に実行するためにどのようなテストを指定します2つのうちの1つ(ユニット/ it)のみをテストし、コンパイルすることができますが、私はそれらを両方とも持っている必要があります。前もって感謝します。
編集:私はSBT_OPTS="-Xmx1536M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled"
で実行されているSBTを試してみましたが、私はあなたが今、組み立て時に並行してテストや統合テストを実行しているやっているどのようなエラーで異なるメッセージ、java.lang.OutOfMemoryError: Java heap space
ありがとう、それらを順番に実行すると、それを実行するすべてのメモリを取ることはありません、幸い私はすでに彼らが導入したようにSBT 0.13.8にあったそれ以降のリリースでは。 – user145634
うれしいことですが、一般的なコメント:SBTはかなり下位互換性がありますので、現在最新のバージョン0.13.13にアップデートしない理由はありません。 – Haspemulator