我尝试使用sbt程序集创建一个胖jar,我收到以下错误:
[warn] Merging 'org\eclipse\persistence\descriptors\copying' with strategy 'rename'
[warn] Merging 'META-INF\MANIFEST.MF' with strategy 'discard'
[warn] Merging 'META-INF\maven\commons-logging\commons-logging\pom.properties' with strategy 'discard'
[warn] Merging 'META-INF\maven\commons-logging\commons-logging\pom.xml' with strategy 'discard'
[warn] Merging 'META-INF\maven\javax.validation\validation-api\pom.properties' with strategy 'discard'
[warn] Merging 'META-INF\maven\javax.validation\validation-api\pom.xml' with strategy 'discard'
[warn] Merging 'META-INF\maven\joda-time\joda-time\pom.properties' with strategy 'discard'
[warn] Merging 'META-INF\maven\joda-time\joda-time\pom.xml' with strategy 'discard'
[warn] Merging 'META-INF\maven\org.apache.commons\commons-dbcp2\pom.properties' with strategy 'discard'
[warn] Merging 'META-INF\maven\org.apache.commons\commons-dbcp2\pom.xml' with strategy 'discard'
[warn] Merging 'META-INF\maven\org.apache.commons\commons-pool2\pom.properties' with strategy 'discard'
[warn] Merging 'META-INF\maven\org.apache.commons\commons-pool2\pom.xml' with strategy 'discard'
[warn] Merging 'META-INF\maven\org.glassfish\javax.json\pom.properties' with strategy 'discard'
[warn] Merging 'META-INF\maven\org.glassfish\javax.json\pom.xml' with strategy 'discard'
[warn] Merging 'META-INF\maven\org.joda\joda-convert\pom.properties' with strategy 'discard'
[warn] Merging 'META-INF\maven\org.joda\joda-convert\pom.xml' with strategy 'discard'
[warn] Merging 'META-INF\maven\org.slf4j\slf4j-api\pom.properties' with strategy 'discard'
[warn] Merging 'META-INF\maven\org.slf4j\slf4j-api\pom.xml' with strategy 'discard'
[error] 1 error was encountered during merge
[trace] Stack trace suppressed: run last *:assembly for the full output.
[error] (*:assembly) deduplicate: different file contents found in the following:
[error] C:\Documents and Settings\kp\.ivy2\cache\org.eclipse.persistence\javax.persistence\jars\javax.persistence-2.1.1.jar:META-INF/eclipse.inf
[error] C:\Documents and Settings\kp\.ivy2\cache\org.eclipse.persistence\commonj.sdo\jars\commonj.sdo-2.1.1.jar:META-INF/eclipse.inf
我的依赖是
Seq(
"com.typesafe.akka" %% "akka-actor" % "2.3.15",
"org.eclipse.persistence" % "eclipselink" % "2.6.2" % "provided" ,
"org.scalikejdbc" %% "scalikejdbc" % "2.3.5",
"org.scalaz" %% "scalaz-core" % "7.2.5"
)
问题的原因似乎是commonj.sdo-2.1.1.jar
答案 0 :(得分:2)
如果相同的路径文件有不同的内容,则sbt-assembly会抛出错误。
您可以通过选择合并策略来避免或解决此错误。
在build.sbt
中添加以下代码assemblyMergeStrategy in assembly := {
case PathList("META-INF", "eclipse.inf") => MergeStrategy.last
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}
答案 1 :(得分:0)
您需要做的是定义程序的合并策略。