首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定非托管依赖库的作用域sbt-assembly

确定非托管依赖库的作用域sbt-assembly
EN

Stack Overflow用户
提问于 2015-03-21 15:01:03
回答 1查看 371关注 0票数 0

我正在尝试从我的主项目中确定一个非托管依赖库的范围。以下是场景

我在名为coinprism-api-assembly-1.2.jarlib文件夹中有一个未管理的依赖项,该文件夹包含以下Build.scala文件:

代码语言:javascript
复制
  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文件:

代码语言:javascript
复制
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后得到的错误消息。

代码语言:javascript
复制
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

那么,如何从与suredbits-core内部的jar冲突中排除coin-prism-api jar中的依赖项呢

EN

回答 1

Stack Overflow用户

发布于 2015-03-21 15:46:22

据我所知,您包含的其中一个库包含一个"xml“scala库,并且在您的项目中也使用该库(直接或通过依赖)

除了使用这个库的两个不同版本之外,一切都应该很好。sbt-assembly应该使用哪个版本的库?如果它选择一个版本,那么使用其他版本的模块将无法工作。

在您的jar中,同一个库不能有两个不同的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29180132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档