2011-03-02 2 views
1

Pour une raison quelconque, 'Grails war' inclut dans "WEB-INF/lib" les fichiers 'groovy-1.6.9.jar' et 'groovy-all-1.7.8.jar' . Je travaille avec Grails 1.3.7 et quand je déploie cette guerre dans Tomcat, je reçois l'erreur suivante:Ancienne version Groovy dans Grails war

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.codehaus.groovy.control.SourceUnit.getSource()Lorg/codehaus/groovy/control/io/ReaderSource;

La seule façon que je suis en mesure de déployer la guerre est en supprimant le fichier groovy et plus l'application fonctionne bien.

Je débogué le processus de dépendance et tout ce que je pouvais trouver était le suivant:

[NOT REQUIRED] org.codehaus.groovy#groovy;1.6.9!groovy.jar 
... 
:: evicted modules: 
junit#junit;3.8.2 by [junit#junit;4.8.1] in [test] 
      in org.codehaus.groovy#groovy;1.6.9 with latest-revision 

Alors, je continue et a obtenu le fichier « org.codehaus.groovy.modules.http constructeur/http constructeur/lierre 0.5.0-RC2.xml » qui contient les éléments suivants:

<dependency org="org.codehaus.groovy" name="groovy" rev="[1.5,1.6.99)" 

j'ai changé cette ligne « [1.7,1.7.8) » et le processus de dépendance fonctionne très bien et maintenant la guerre se déploie sans aucun problème , mais je n'ai jamais touché à ça auparavant et je suis inquiet. Est-ce la bonne façon de procéder avec les dépendances de Grails?

Tout cela a commencé à se produire après l'installation du plugin JQuery UI et même après l'avoir retiré, le problème a continué.

Merci

Répondre

9

On dirait que vous avez http constructeur dans vos dépendances bloc dans BuildConfig.groovy. http-builder tire dans groovy comme une dépendance transitive. Vous devez l'exclure pour éviter tout conflit avec groovy-tout livré avec Grails.

compile("org.codehaus.groovy.modules.http-builder:http-builder:0.5.0") { 
    excludes 'groovy', 'xml-apis' 
} 

(note: l'exemple ci-dessus exclut xml-apis ainsi, vous pouvez le faire si vous êtes sur Java 6, afin d'éviter les classes en double)

Pour traquer les conflits comme celui-ci, vous pouvez utiliser la commande:

grails dependency-report 

qui génère un rapport sous cible/dépendance-rapport/

+0

Je n'ai pas que la dépendance à buildconfig. En examinant les résultats, il semble que mon application ait cette dépendance face à Apache HTTPClient. Quoi qu'il en soit, j'ai ajouté votre exemple tel quel, et la guerre est créée avec http-builder: 0.5.0 et http-builder: 0.5.0-RC2. Je pense que je pourrais avoir les dépendances complètement foiré grâce à STS, mais votre réponse m'a amené dans la bonne direction pour corriger cela correctement. Merci. – Eldelshell