簡體   English   中英

sbt-assembly 包括測試類

[英]sbt-assembly include test classes

我遵循sbt-assembly :包括https://github.com/sbt/sbt-assembly中描述的配置中的測試類這些類可以正常進行組裝

當我加載 sbt 我得到

assembly.sbt:5: error: reference to jarName is ambiguous;
it is imported twice in the same scope by
import sbtassembly.AssemblyKeys._
and import _root_.sbtassembly.AssemblyPlugin.autoImport._
jarName in (Test, assembly) := s"${name.value}-test-${version.value}.jar"
^

所以,我注釋導入行並運行 sbt:assembly 但這開始測試但不生成任何-test- .jar。

有人知道如何生成包含測試類的 jar 嗎? 謝謝

我不得不刪除這一行(我認為它現在是基於https://github.com/sbt/sbt-assembly/blob/546d200477b64e2602beeb65bfa04306122cd9f5/Migration.md 自動導入的)

import sbtassembly.AssemblyKeys._

我將其余的(即下面的兩行)添加到build.sbt而不是assembly.sbt

Project.inConfig(Test)(baseAssemblySettings)
jarName in (Test, assembly) := s"${name.value}-test-${version.value}.jar"

采取這些步驟后, test:assembly確實為我生成了一個測試 jar, 但是我希望 jar 只包含測試類(類似於 test:package ),但它似乎也包含非測試類。 換句話說,如果我有 src/main/scala/Foo.scalasrc/test/scala/FooTest.scala那么我認為 test:assembly生成的 jar 只會包含 FooTest.class但它似乎也包含 Foo .class 希望這對您來說不是問題,因為我還不確定如何解決這個問題。

編輯:如果您希望 jar 只包含來自src/test 的類(就像我所做的那樣),那么您可以將以下內容添加到您的 build.sbt 以過濾掉您的類路徑中可能存在的所有其他內容:

fullClasspath in (Test, assembly) := {
  val cp = (fullClasspath in (Test, assembly)).value
  cp.filter({x => x.data.getPath.contains("test-classes")})
}

這對我有用:

lazy val root = project.settings(
    assembly / fullClasspath := (assembly / fullClasspath).value ++ (Test / fullClasspath).value
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM