sbt-assembly 的 Slick 3.1.1 重复数据删除错误
Slick 3.1.1 deduplication errors with sbt-assembly
我在 Scala 项目中使用 Slick 3.1.1。我的 build.sbt libraryDependencies
包含这个:
"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",
一切正常。但是,当我尝试使用 sbt-assembly
进行部署时,出现如下错误:
[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
我该如何解决这些问题?
之前我使用的是 Slick 3.0,它不需要 slick-hikaricp
,而且运行良好。我尝试删除 .ivy2/cache/com.zaxxer/HikariCP-java6
,但这不起作用 - 它只是重新创建。我的 mergeStrategy
是
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)
}
}
按照@brettw 在他上面的评论中的建议,我通过将 exclude
命令添加到 build.sbt
中来实现它,如下所示:
"com.typesafe.slick" %% "slick-hikaricp" % "3.1.1" exclude("com.zaxxer", "HikariCP-java6"),
我在 Scala 项目中使用 Slick 3.1.1。我的 build.sbt libraryDependencies
包含这个:
"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",
一切正常。但是,当我尝试使用 sbt-assembly
进行部署时,出现如下错误:
[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
我该如何解决这些问题?
之前我使用的是 Slick 3.0,它不需要 slick-hikaricp
,而且运行良好。我尝试删除 .ivy2/cache/com.zaxxer/HikariCP-java6
,但这不起作用 - 它只是重新创建。我的 mergeStrategy
是
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)
}
}
按照@brettw 在他上面的评论中的建议,我通过将 exclude
命令添加到 build.sbt
中来实现它,如下所示:
"com.typesafe.slick" %% "slick-hikaricp" % "3.1.1" exclude("com.zaxxer", "HikariCP-java6"),