2017-09-22 1 views
0

J'essaie d'utiliser la version 4.4 de la version en tant que bibliothèque client Redis dans un projet play framework 2.5.5. On dirait qu'il y a quelques problèmes de compatibilité avec les versions netty utilisées par play 2.5.5 et laitue 4.4.Utilisation de la version 4.4 avec play framework 2.5.5

Je vois un java.nio.channels.UnresolvedAddressException pendant que le client redis tente de se connecter à un serveur Redis installé localement. J'ai veillé à ce que le serveur Redis fonctionne correctement. De plus, je suis capable de me connecter à redis en utilisant la laitue 4.4 d'un projet Java basé sur maven indépendant.

Pour résoudre le problème, je reproduis le problème dans le projet Maven indépendant en spécifiant la dépendance Netty explicitement comme suit:

<dependency> 
    <groupId>io.netty</groupId> 
    <artifactId>netty-all</artifactId> 
    <version>4.0.20.Final</version> 
</dependency> 

Et je suis en mesure de résoudre le problème dans le projet Maven en utilisant le ombré -jar où les dépendances sont déplacées vers le package com.lambdaworks pour éviter les conflits de version, comme indiqué dans https://github.com/lettuce-io/lettuce-core#binariesdownload. Pour utiliser le fichier ombré, la propriété 'classifier' est ajoutée à la définition de dépendance de la laitue avec la valeur 'ombrée', et une liste d'exclusions est également spécifiée. Comment puis-je obtenir la même chose en utilisant build.sbt?

Selon http://www.scala-sbt.org/0.13/docs/Library-Management.html#Exclude+Transitive+Dependencies, je peux spécifier des exclusions dans build.sbt, mais je ne sais pas comment définir la propriété classifier. Avec seulement la liste des exclusions, cela ne semble pas fonctionner.

Répondre

0

Enfin, je suis en mesure de résoudre le problème en spécifiant le classificateur shaded et exclusions dans le build.sbt comme ci-dessous:

"biz.paluch.redis" % "lettuce" % "4.4.0.Final" classifier "shaded" excludeAll(
    ExclusionRule(organization = "io.reactivex", artifact="rxjava"), 
    ExclusionRule(organization = "org.latencyutils", artifact="LatencyUtils"), 
    ExclusionRule(organization = "io.netty", artifact="netty-common"), 
    ExclusionRule(organization = "io.netty", artifact="netty-transport"), 
    ExclusionRule(organization = "io.netty", artifact="netty-handler"), 
    ExclusionRule(organization = "io.netty", artifact="netty-codec"), 
    ExclusionRule(organization = "com.google.guava", artifact="guava"), 
    ExclusionRule(organization = "io.netty", artifact="netty-transport-native-epoll"), 
    ExclusionRule(organization = "io.apache.commons", artifact="commons-pool2")) 
)