2016-03-22 11 views
1

Ich benutze Slick 3.1.1 in einem Scala-Projekt. Mein build.sbt libraryDependencies enthält das:Slick 3.1.1 Deduplizierungsfehler mit sbt-assembly

"com.typesafe.slick" %% "slick"   % "3.1.1", 
"com.typesafe.slick" %% "slick-hikaricp" % "3.1.1",  
"com.zaxxer"   % "HikariCP"   % "2.4.3", 
"mysql"    % "mysql-connector-java" % "5.1.38", 

Alles funktioniert. Allerdings, wenn ich mit sbt-assembly bereitstellen versuche ich Fehler wie diese:

[error] deduplicate: different file contents found in the following: 
[error] /home/thunderkid/.ivy2/cache/com.zaxxer/HikariCP-java6/bundles/HikariCP-java6-2.3.7.jar:com/zaxxer/hikari/pool/HikariPool.class 
[error] /home/thunderkid/.ivy2/cache/com.zaxxer/HikariCP/bundles/HikariCP-2.4.3.jar:com/zaxxer/hikari/pool/HikariPool.class 

Wie kann ich diese beheben?

Zuvor war ich Slick 3.0, die slick-hikaricp nicht benötigt, und es hat gut funktioniert. Ich habe versucht, .ivy2/cache/com.zaxxer/HikariCP-java6 zu löschen, aber das funktioniert nicht - es ist nur neu erstellt. Mein mergeStrategy ist

mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) => 
    { 
     case PathList(ps @ _*) if ps.last endsWith "ArgumentsProcessor.class" => MergeStrategy.first 
     case PathList(ps @ _*) if ps.last endsWith "MatchersBinder.class" => MergeStrategy.first 
     case "application.conf" => MergeStrategy.concat 
     case "unwanted.txt"  => MergeStrategy.discard 
     case x => old(x) 
    } 
} 
+1

Es ist möglich, dass die Slick-hikaricp Abhängigkeit die Abhängigkeit HikariCP-java6 ziehen. Sie können entweder die explizite Abhängigkeit von HikariCP entfernen oder die HikariCP-java6-Abhängigkeit außer Kraft setzen. Siehe [diese Seite] (http://www.scala-sbt.org/0.13.5/docs/Detailed-Topics/Library-Management.html) zum Erzwingen/Überschreiben von Abhängigkeiten. – brettw

+0

Ja, das hat funktioniert. Vielen Dank. Ich habe meine Arbeitslinie in einer Antwort unten gezeigt. – thund

Antwort

0

Auf Anraten des @ brettw in seinem Kommentar über, habe ich es durch Zugabe eines exclude Befehl in build.sbt zu arbeiten wie folgt:

"com.typesafe.slick" %% "slick-hikaricp" % "3.1.1" exclude("com.zaxxer", "HikariCP-java6"),  
+0

Ich denke, Sie sollten stattdessen die Zeile "com.zaxxer"% "HikariCP"% "2.4.3", insgesamt entfernen. HikariCP ist bereits eine harte Abhängigkeit von 'Slick-Hikaricp' – user2829759