2

私の sbt プロジェクトでは、src/test/...ファイルを含むテスト jar を生成して、他のプロジェクトで再利用できるようにしたいと考えています。

このsbtコマンドを使用して、このテスト jar を生成しようとしています。

sbt test:assembly

私のbuild.sbtでは、次のTestスコープ構成を提供します。

import AssemblyKeys._

...

assemblySettings

Project.inConfig(Test)(assemblySettings)

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

...

mergeStrategy in (Test, assembly) <<= (mergeStrategy in (Test, assembly)) { (old) =>
 {
  case "ECLIPSEF.RSA" => MergeStrategy.first
  case x => old(x)
 }
}

この構成は次のエラーで失敗します:

[警告] 「META-INF\DEPENDENCIES」を戦略「破棄」とマージしています
java.lang.RuntimeException: 重複排除: 以下に異なるファイルの内容が見つかりました:
...\.ivy2\cache\org.eclipse.jetty.orbit\javax.transaction\orbits\javax.transaction-1.1.1.v201105210645.jar:META-INF/ECLIPSEF.RSA
...\.ivy2\cache\org.eclipse.jetty.orbit\javax.servlet\orbits\javax.servlet-3.0.0.v201112011016.jar:META-INF/ECLIPSEF.RSA
...\.ivy2\cache\org.eclipse.jetty.orbit\javax.mail.glassfish\orbits\javax.mail.glassfish-1.4.1.v201005082020.jar:META-INF/ECLIPSEF.RSA
...\.ivy2\cache\org.eclipse.jetty.orbit\javax.activation\orbits\javax.activation-1.1.0.v201105071233.jar:META-INF/ECLIPSEF.RSA
        at sbtassembly.Plugin$Assembly$.sbtassembly$Plugin$Assembly$$applyStrategy$1(Plugin.scala:253)
        at sbtassembly.Plugin$Assembly$$anonfun$15.apply(Plugin.scala:27​​0)
        sbtassembly.Plugin$Assembly$$anonfun$15.apply(Plugin.scala:267) で
        scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251) で
        scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251) で
        scala.collection.Iterator$class.foreach(Ite​​rator.scala:727) で
        scala.collection.AbstractIterator.foreach(Ite​​rator.scala:1157) で
        scala.collection.IterableLike$class.foreach(Ite​​rableLike.scala:72) で
        ...
[エラー] (MyProject/test:assembly) 重複排除: 次のファイルの内容が異なります:
[エラー] ...\.ivy2\cache\org.eclipse.jetty.orbit\javax.transaction\orbits\javax.transaction-1.1.1.v201105210645.jar:META-INF/ECLIPSEF.RSA
...

テストスコープ(テスト、アセンブリ)の場合、mergeStrategy構成は無視されているようです

私の質問は、 build.sbt を構成して、 test:assemblyによって生成された jar のmergeStrategyを有効にする方法ですか?

4

1 に答える 1