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.firstbtwMerci @ariskk, j'ai essayé et cela a fonctionné !!!