【发布时间】:2016-02-01 12:41:21
【问题描述】:
我有两个 Sbt 项目,my-commons 和 my-service。
我的公地
依赖关系
libraryDependencies ++= Seq(
"nz.ac.waikato.cms.weka" % "attributeSelectionSearchMethods" % "1.0.7",
"de.bwaldvogel" % "liblinear" % "1.95"
"io.dropwizard.metrics" % "metrics-graphite" % "3.1.2",
"com.github.nscala-time" %% "nscala-time" % "2.2.0",
"org.apache.hive" % "hive-jdbc" % "1.1.0-cdh5.4.5",
"org.apache.hadoop" % "hadoop-common" % "2.6.0-cdh5.4.5",
"org.apache.hadoop" % "hadoop-hdfs" % "2.6.0-cdh5.4.5"
)
我的服务:
依赖关系
libraryDependencies ++= {
Seq(
"ch.qos.logback" % "logback-classic" % "1.0.13",
"io.spray" %% "spray-httpx" % "1.3.3",
"io.spray" %% "spray-json" % "1.3.2",
"io.spray" %% "spray-can" % "1.3.3",
"io.spray" %% "spray-routing" % "1.3.3",
"io.spray" %% "spray-testkit" % "1.3.3" % "test",
"com.typesafe.akka" %% "akka-actor" % "2.3.9",
"com.typesafe.akka" %% "akka-testkit" % "2.3.9" % "test",
"org.specs2" %% "specs2-core" % "2.3.11" % "test",
"org.json4s" %% "json4s-native" % "3.2.11",
"org.json4s" %% "json4s-ext" % "3.2.11",
"org.mockito" % "mockito-all" % "1.8.4" % "test",
"com.mycommon.projects" % "my-commons" % "1.0.+"
)
我正在使用程序集 sbt 插件
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
我在 sbt 程序集上遇到错误:
at java.lang.Thread.run(Thread.java:745)
[error] (*:assembly) deduplicate: different file contents found in the following:
[error] /home/me/.ivy2/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.7.7.jar:META-INF/maven/org.slf4j/slf4j-api/pom.properties
[error] /home/me/.ivy2/cache/com.twitter/parquet-hadoop-bundle/jars/parquet-hadoop-bundle-1.5.0-cdh5.4.5.jar:META-INF/maven/org.slf4j/slf4j-api/pom.properties
我试图从构建中排除这些库,但没有成功。
libraryDependencies ~= { _ map {
case m if m.organization.startsWith("org.apache") || m.organization.startsWith("com.twitter") || m.name.contains("parquet") =>
m.exclude("org.slf4j","slf4j-api").
exclude("org.slf4j","slf4j-log4j12")
case m => m
}}
可能我做错了什么......我该如何解决这个依赖地狱?
【问题讨论】:
-
你能提供你的 Build.scala 和项目层次结构吗?
-
这是 build.sbt 的部分。这两个项目不是分层的
-
那么为什么
my-service依赖于my-common?"com.mycommon.projects" % "my-commons" % "1.0.+" -
这两个项目是否在同一个目录中?每个文件夹不同?