J'ai ajouté le fichier jar suivant au fichier build.sbt
comme suit:
addSbtPlugin("io.spray" % "sbt-revolver" % "0.7.2") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.5.0") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9") addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.1") addSbtPlugin("com.scalapenos" % "sbt-prompt" % "0.2.1") addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.1.10") addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.0") addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
Postez ceci, pendant la fusion, j'obtiens l'erreur suivante: p>
excludeDependencies ++= Seq( SbtExclusionRule("io.netty", "netty-codec-http"), SbtExclusionRule("io.netty", "netty-codec"), SbtExclusionRule("io.netty", "netty-handler"), SbtExclusionRule("io.netty", "netty-transport"), SbtExclusionRule("io.netty", "netty-resolver"), SbtExclusionRule("io.netty", "netty-buffer"), SbtExclusionRule("io.netty", "netty-common") )
J'ai essayé de nombreuses solutions de contournement fournies pour cela comme:
1) a ajouté cette ligne dans assemblyMergeStrategy
dans build. sbt
: case PathList ("io",  "netty", xs @ _ *) =>  MergeStrategy.discard
(essayé avec .last
et .first )
2) a ajouté cette ligne dans assemblyMergeStrategy
dans build.sbt
: case "META-INF \\ io.netty.versions.properties " => MergeStrategy.first
(essayé avec .last
et .discard
)
3) ajout de règles d'exclusion SBT pour les pots netty erronés dans les dépendances exclues comme ci-dessous:
[error] 1 error was encountered during merge java.lang.RuntimeException: deduplicate: different file contents found in the following: /home/jenkins-slave/.ivy2/cache/io.netty/netty-codec-http/jars/netty-codec-http-4.1.17.Final.jar:META-INF/io.netty.versions.properties /home/jenkins-slave/.ivy2/cache/io.netty/netty-handler/jars/netty-handler-4.1.17.Final.jar:META-INF/io.netty.versions.properties /home/jenkins-slave/.ivy2/cache/io.netty/netty-codec/jars/netty-codec-4.1.17.Final.jar:META-INF/io.netty.versions.properties /home/jenkins-slave/.ivy2/cache/io.netty/netty-transport/jars/netty-transport-4.1.17.Final.jar:META-INF/io.netty.versions.properties /home/jenkins-slave/.ivy2/cache/io.netty/netty-resolver/jars/netty-resolver-4.1.17.Final.jar:META-INF/io.netty.versions.properties /home/jenkins-slave/.ivy2/cache/io.netty/netty-buffer/jars/netty-buffer-4.1.17.Final.jar:META-INF/io.netty.versions.properties /home/jenkins-slave/.ivy2/cache/io.netty/netty-common/jars/netty-common-4.1.17.Final.jar:META-INF/io.netty.versions.properties at sbtassembly.Assembly$.applyStrategies(Assembly.scala:143) at sbtassembly.Assembly$.x$1$lzycompute$1(Assembly.scala:25) at sbtassembly.Assembly$.x$1$1(Assembly.scala:23) at sbtassembly.Assembly$.stratMapping$lzycompute$1(Assembly.scala:23) at sbtassembly.Assembly$.stratMapping$1(Assembly.scala:23)...........
et de nombreuses variantes de ce qui précède.Aucune de ces solutions ne fonctionne. P >
plugins.sbt
ressemble à ci-dessous:
"com.amazonaws" % "aws-java-sdk" % "1.11.492"
Veuillez nous le conseiller.
4 Réponses :
Vous pouvez essayer ci-dessous:
case x if x.contains("versions.properties") => MergeStrategy.discard
ou dans le pire des cas
assemblyMergeStrategy in assembly := { case x if x.contains("io.netty.versions.properties") => MergeStrategy.discard case x => val oldStrategy = (assemblyMergeStrategy in assembly).value oldStrategy(x) }
Si vous vérifiez le contenu du fichier, vous pouvez voir que chaque jar a des valeurs différentes, donc pour être correct dans l'assemblage, vous avez concaté ces fichiers pour conserver toutes les propriétés qu'ils contiennent. Utilisez case "META-INF / io.netty.versions.properties" => MergeStrategy.concat
dans la stratégie.
Après avoir recherché une solution au problème, j'ai trouvé ce problème sur le référentiel sbt-assembly
.
Il contient la solution de contournement suivante qui a résolu le problème pour moi:
Cela fonctionne lorsque la dépendance externe est remplacée par une version antérieure de la bibliothèque aws,
"com.amazonaws"% "aws-java-sdk"% "1.11.80"
, car celle-ci ne contient aucun doublon deMETA-INF / io.netty.versions.properties
.
Je peux imaginer que cela ne fonctionne pas pour ceux qui ont besoin de la toute dernière version, mais c'est au moins quelque chose.
Je pense que vous obtenez cette erreur en raison de la disponibilité de plusieurs versions. Pour éviter cela, vous pouvez essayer l'extrait ci-dessous dans votre build.sbt et essayer.
assemblyShadeRules in assembly: = Seq (ShadeRule.rename ("shapeless. **" -> "new_shapeless. @ 1"). inAll)
Avez-vous essayé
"com.amazonaws"% "aws-java-sdk"% "1.11.492" excludeAll ExclusionRule (organization = "io.netty")
? Dans notre version, il s'agit ducas "META-INF / io.netty.versions.properties" => MergeStrategy.first
btwMerci @ariskk, j'ai essayé et cela a fonctionné !!!