Le 12/02/2013 23:00, Benjamin POUSSIN a écrit :
On Tue, 12 Feb 2013 11:45:38 +0100 Eric Chatellier <chatellier@codelutin.com> wrote:
Par exemple, dans le module web, la classe : nc.ird.cantharella.web.pages.SandboxPage compile explicitement en utilisant des imports hibernate : import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Restrictions;
Il semble y avoir une bonne pratique maven qui stipule que les dépendances nécessaires à la compilation doivent être explicitement déclarée dans le pom en scope compile. Il y a d'ailleurs un plugin maven qui sert a détecter ce genre d'erreur http://maven.apache.org/plugins/maven-dependency-plugin/usage.html#The_depen...
C'est une mauvaise pratique de compiler sur une dépendance transitive car si la librairie qui l'a tire est mise à jour et ne la tire plus, cela causera une erreur de compilation.
Là encore, si les dépendances sont maitrisées, cela ne me parait pas gênant de ne pas le faire. D'autant plus qu'hibernate serait une dépendance transitive du module "cantharella.data" et le jour où il ne la tirera plus n'est pas prêt d'arriver. Je ne suis pas vraiment d'accord :).
Si dans le code on a un import explicite d'une librairie, il faut l'avoir en dépendance dans le pom.xml
Si cela nous dérange de l'avoir en dépendance (ex: mais pourquoi avoir du hibernate dans la couche presentation ?). Pour moi cela veut dire que le projet est mal découpé. On ne devrait pas avoir d'import hibernate dans le module présentation et donc pas besoin de la dépendance.
Il ne faut pas caché un mauvais découpage en module ou un manque de méthode métier dans un module, en masquant une dépendance dans le pom.xml en s'appuyant sur les dépendances transitive pour cela.
Donc pour moi, soit on en a besoin et on met la dépendance soit on en veut pas, et il faut refactoré le code pour supprimer la dépendance
Je comptais effectivement utiliser dependency:analyse pour m'assurer que seules les librairies utilisées directement apparaissent pour chaque module (sans oublier celle utilisées au runtime). Je vous tiens au courant dès que j'ai terminé ce nettoyage. J'enlèverai les dépendances qui n'ont pas lieu d'être car initialement le projet était bien découpée. Adrien -- Adrien Cheype Ingénieur en Systèmes d'Information Service « Informatique Scientifique et Appui aux Partenaires du Sud » Direction du Système d'Information (DSI) http://www.ird.fr/dsi/ http://www.ird.fr/informatique-scientifique/ INSTITUT DE RECHERCHE POUR LE DEVELOPPEMENT BP A5 - 98848 Nouméa - Nouvelle Calédonie Tél. +687 260 789