2010-11-23 3 views
0

Ceci est mon Maven exécution Groovy:Comment résoudre les conflits Groovy avec Apache Common Logging?

[...] 
<plugin> 
    <groupId>org.codehaus.groovy.maven</groupId> 
    <artifactId>gmaven-plugin</artifactId> 
    <version>1.0-rc-5-SNAPSHOT</version> 
    <executions> 
    <execution> 
     <phase>prepare-package</phase> 
     <goals> 
     <goal>execute</goal> 
     </goals> 
     <configuration> 
     <classpath> 
      <element> 
      <groupId>commons-httpclient</groupId> 
      <artifactId>commons-httpclient</artifactId> 
      <version>3.1</version> 
      </element 
     </classpath> 
     <source> 
      import org.apache.commons.httpclient.HttpClient; 
      // ... 
     </source> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
[...] 

Voici ce que dit Maven:

[...] 
[ERROR] Failed to execute goal org.codehaus.groovy.maven:gmaven-plugin:1.0-rc-5-SNAPSHOT:execute (...) on project XXX: 
java.lang.ExceptionInInitializerError: org.apache.commons.logging.LogConfigurationException: 
org.apache.commons.logging.LogConfigurationException: 
Invalid class loader hierarchy. 
You have more than one version of 'org.apache.commons.logging.Log' visible, 
which is not allowed. 
(Caused by org.apache.commons.logging.LogConfigurationException: 
Invalid class loader hierarchy. 
[...] 

Je pense que je comprends pourquoi cela arrive, mais comment puis-je résoudre?

+0

Je suis curieux, pourquoi utilisez-vous un ancien plugin gmaven au lieu de 1.3 (http://btilford.blogspot.com/2010/08/gmaven-13-is-out.html)? – Skarab

+0

1.3 est le plus récent, pas 1.2. – Skarab

+0

Merci, utilisera 1.3 à partir de maintenant :) – yegor256

Répondre

1

La mise à niveau vers la version 1.3 a résolu le problème.

1

Il est difficile de dire exactement comment résoudre ce problème sans voir votre fichier pom.xml entier, mais je suggère de regarder dans le tag. Vous pouvez exclure la dépendance supplémentaire avec quelque chose comme ce qui suit:

<plugin> 
    ... 
    ... 
    <dependencies> 
     <dependency> 
      <artifactId>...</artifactId> 
      <groupId>...</groupId> 
      <version>...</version> 
      <exclusions> 
       <exclusion> 
        <artifactId>commons-logging</artifactId> 
        <groupId>commons-logging</groupId>       
       <exclusion> 
      </exclusions> 
     </dependency> 
    </dependencies> 
</plugin> 
+0

J'inclus 'commons-logging' pour mon projet. Je ne peux pas l'exclure entièrement :) Je dois l'exclure juste pour cet extrait Groovy particulier. Possible? – yegor256

+0

Vincenzo, Votre 'commons-httpd' a aussi une dépendance de journalisation des communs. Vous avez donc deux dépendances 'log-commons' qui s'affrontent lorsque vous essayez d'utiliser commons-httpclient (celui que vous avez inclus, et celui qu'il veut utiliser). Ce que je suggère que vous fassiez est d'exclure celui que commons-httpclient veut utiliser. – dsummersl

+0

Exactement, mais comment l'exclure? – yegor256

0

Vérifiez qui importe que la dépendance à la dépendance mvn: arbre et éliminer les conflits.

+0

Je sais qui importe cette dépendance, c'est moi :) J'ai besoin de ce JAR dans mon projet et je ne peux pas l'exclure. Je veux juste que Gmaven ne l'importe plus. Puis-je faire ceci? – yegor256

Questions connexes