确定非托管依赖项库sbt-assembly的范围

时间:2015-03-21 07:01:03

标签: scala sbt sbt-assembly

我正在尝试从我的主项目中扩展非托管依赖项库。这是方案

我在名为lib的{​​{1}}文件夹中有一个非受管理的依赖项,其中包含以下coinprism-api-assembly-1.2.jar文件:

Build.scala

我正在尝试组装的项目包含以下 1 import sbt._ 2 import Keys._ 3 object CoinPrismBuild extends Build { 4 5 val appName = "coinprism-api" 6 val appV = "1.2" 7 val scalaV = "2.11.2" 8 val akkaV = "2.3.6" 9 val sprayV = "1.3.2" 10 11 val appDependencies = Seq( 12 "com.typesafe.akka" %% "akka-actor" % akkaV withSources() withJavadoc(), 13 "com.typesafe.akka" %% "akka-testkit" % akkaV % "test" withSources() withJavadoc(), 14 "io.spray" %% "spray-client" % sprayV withSources() withJavadoc(), 15 "io.spray" %% "spray-can" % sprayV withSources() withJavadoc(), 16 "io.spray" %% "spray-routing" % sprayV withSources() withJavadoc(), 17 "io.spray" %% "spray-json" % "1.3.1" withSources() withJavadoc(), 18 "io.spray" %% "spray-testkit" % sprayV % "test" withSources() withJavadoc(), 19 "org.scalatest" %% "scalatest" % "2.2.4" % "test" withSources() withJavadoc(), 20 "joda-time" % "joda-time" % "2.7" 21 ) 22 23 24 lazy val root = Project(appName, base=file(".")).settings( 25 scalaVersion := scalaV, 26 version := appV, 27 libraryDependencies ++= appDependencies 28 ) 29 30 } 文件:

build.sbt

此处是切换到import AssemblyKeys._ name := "suredbits-core" version := "2.13.0" scalaVersion := "2.11.4" resolvers += Resolver.mavenLocal organization := "com.suredbits.core" libraryDependencies ++= { val sprayV = "1.3.2" val akkaV = "2.3.8" Seq( "org.scalatest" % "scalatest_2.11" % "2.2.0", "io.spray" %% "spray-can" % sprayV % "provided" withSources() withJavadoc(), "io.spray" %% "spray-routing" % sprayV % "provided" withSources() withJavadoc(), "io.spray" %% "spray-testkit" % sprayV % "test" withSources() withJavadoc(), "com.typesafe.akka" %% "akka-actor" % akkaV % "provided" withSources() withJavadoc(), "com.typesafe.akka" %% "akka-testkit" % akkaV % "test" withSources() withJavadoc(), "org.specs2" %% "specs2-core" % "2.4.7-scalaz-7.0.6" % "test" withSources() withJavadoc(), "org.scalactic" %% "scalactic" % "2.2.1" % "test" withSources() withJavadoc(), "io.spray" %% "spray-json" % "1.3.0" withSources() withJavadoc(), "info.blockchain" % "api" % "1.0.1", "com.github.nscala-time" %% "nscala-time" % "1.6.0" withSources() withJavadoc() , "com.typesafe.slick" %% "slick" % "2.1.0" withSources() withJavadoc(), "com.typesafe.slick" %% "slick-testkit" % "2.1.0" % "test" withSources() withJavadoc(), "com.novocode" % "junit-interface" % "0.10" % "test" withSources() withJavadoc(), "postgresql" % "postgresql" % "9.1-901.jdbc4" % "test" withSources() withJavadoc(), "org.postgresql" % "postgresql" % "9.2-1003-jdbc4" withSources() withJavadoc(), "org.bitcoinj" % "bitcoinj-core" % "0.12" withSources() withJavadoc() , "org.slf4j" % "slf4j-api" % "1.7.5", "org.slf4j" % "slf4j-simple" % "1.7.5" ) } testOptions += Tests.Argument(TestFrameworks.JUnit, "-q", "-v", "-s", "-a") parallelExecution in Test := false logBuffered := false scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature") scalacOptions ++= Seq("-Xmax-classfile-name", "255") scalacOptions in (Compile,doc) ++= Seq("-groups", "-implicits") sbt-assembly后我现在收到的错误消息。

0.11.2

那么如何排除java.lang.RuntimeException: deduplicate: different file contents found in the following: /home/chris/dev/suredbits-core/lib/coinprism-api-assembly-1.2.jar:scala-xml.properties /home/chris/.ivy2/cache/org.scala-lang.modules/scala-xml_2.11/bundles/scala-xml_2.11-1.0.1.jar:scala-xml.properties at sbtassembly.Plugin$Assembly$.sbtassembly$Plugin$Assembly$$applyStrategy$1(Plugin.scala:253) at sbtassembly.Plugin$Assembly$$anonfun$15.apply(Plugin.scala:270) at sbtassembly.Plugin$Assembly$$anonfun$15.apply(Plugin.scala:267) at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251) at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251) at scala.collection.Iterator$class.foreach(Iterator.scala:727) at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) at scala.collection.AbstractIterable.foreach(Iterable.scala:54) at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251) at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105) at sbtassembly.Plugin$Assembly$.applyStrategies(Plugin.scala:272) at sbtassembly.Plugin$Assembly$.x$4$lzycompute$1(Plugin.scala:172) at sbtassembly.Plugin$Assembly$.x$4$1(Plugin.scala:170) at sbtassembly.Plugin$Assembly$.stratMapping$lzycompute$1(Plugin.scala:170) at sbtassembly.Plugin$Assembly$.stratMapping$1(Plugin.scala:170) at sbtassembly.Plugin$Assembly$.inputs$lzycompute$1(Plugin.scala:214) at sbtassembly.Plugin$Assembly$.inputs$1(Plugin.scala:204) at sbtassembly.Plugin$Assembly$.apply(Plugin.scala:230) at sbtassembly.Plugin$Assembly$$anonfun$assemblyTask$1.apply(Plugin.scala:373) at sbtassembly.Plugin$Assembly$$anonfun$assemblyTask$1.apply(Plugin.scala:370) at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47) at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40) at sbt.std.Transform$$anon$4.work(System.scala:63) at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226) at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226) at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17) at sbt.Execute.work(Execute.scala:235) at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226) at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226) at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159) at sbt.CompletionService$$anon$2.call(CompletionService.scala:28) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) [error] (*:assembly) deduplicate: different file contents found in the following: [error] /home/chris/dev/suredbits-core/lib/coinprism-api-assembly-1.2.jar:scala-xml.properties [error] /home/chris/.ivy2/cache/org.scala-lang.modules/scala-xml_2.11/bundles/scala-xml_2.11-1.0.1.jar:scala-xml.properties [error] Total time: 72 s, completed Mar 21, 2015 11:22:24 AM jar中的依赖项与coin-prism-api内的jar冲突?

1 个答案:

答案 0 :(得分:0)

根据我的理解,你包含的一个库包含一个" xml" scala库和你的项目中你也使用这个库(直接或通过依赖)

除了使用此库的2个不同版本外,一切都应该没问题。 sbt-assembly应该使用哪个版本的库?如果它选择一个版本,则使用其他版本的模块将无法正常工作。

在你的罐子里,你不能拥有同一个库的2个不同版本。