2017-09-13 4 views
0

J'ai un projet Gradle mis en place, qui a un module buildSrc à l'intérieur. A l'intérieur buildSrc, en build.gradle, je donne les résultats suivants:Comment arrêter buildSrc d'appliquer automatiquement le pot groovy-all en tant que dépendance?

dependencies { 
    compile 'org.codehaus.groovy:groovy-all:2.4.12' 
    ... 
} 

Lorsque vous essayez de faire construire pour le projet, je reçois le message d'erreur suivant:

2:07:13 PM: Executing external task 'build --stacktrace'... 
:buildSrc:compileJava NO-SOURCE 
:buildSrc:compileGroovy FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':buildSrc:compileGroovy'. 
> java.lang.ExceptionInInitializerError (no error message) 

Dans le stacktrace, je vois ce qui suit erreur:

Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-all is loaded in version 2.4.11 and you are trying to load version 2.4.12 
    ... 15 more 

Alors, quand je regarde la structure du projet, je vois que le groovy-all-2.4.11.jar est d'être automatiquement chargé dans le buildSrc module.

Picture of buildSrc including groovy-all-2.4.11.jar

Si je supprime la dépendance, il ne fonctionnera compile pour Groovy build.gradle, mais est-il possible de forcer le module à utiliser la version Groovy que je veux?

Répondre

1

Gradle applique toujours le script de génération par défaut au projet buildSrc. Ce script contient la ligne suivante:.

compile localGroovy() 

qui est la façon dont groovy-all-2.4.11 obtient dans Pour remplacer ce comportement, essayez de régler le resolutionStrategy, par exemple:

configurations.compile { 
    resolutionStrategy { 
    force 'org.codehaus.groovy:groovy-all:2.4.12' 
    } 
} 

mais surtout penser, pourquoi voudriez-vous construire contre une version groovy qui diffère de celle disponible dans l'exécution de votre plugin ...