2017-09-27 4 views
0

méthode Impossible de trouver add() J'utilise gradle 2.12 et j'ai plusieurs modules java projet gradle structuré de la manière suivante -erreur Gradle: pour les arguments

parentProject 
|__module1 
    |__src 
    |__build.gradle 
|__module2 
    |_src 
    |__build.gradle 
|__build.gradle 

Les paramètres .gradle est défini comme -

include "module1" 
project(":module1").projectDir = file("path/to/module1") 

include "module2" 
project(":module2").projectDir = file("path/to/module2") 

module2 dépend de module1 et la dépendance est nécessaire dans le buildscript. J'ai suivi l'exemple this qui montre une solution de contournement car gradle ne permet pas les dépendances de classpath des projets dans le buildscript. Ce que je l'ai fait dans le build.gradle de module2 est -

buildscript { 
    repositories { 
     mavenLocal() 
    } 

    project.getTasks().add([name: "module1", type: GradleBuild]) { 
     buildFile = '../module1/build.gradle' 
     tasks = ['pluginJar'] 
    }.execute() 
} 

apply plugin: java 

dependencies { 
    // project specific dependencies 
} 

j'ai commencé à obtenir l'erreur suivante -

Error:(13, 0) Could not find method add() for arguments [{name=module1, type=class org.gradle.api.tasks.GradleBuild}, [email protected]] on task set. 

J'ai cherché des erreurs similaires et trouvé une solution this, mais il ne m'a pas aidé.

Voici comment ma structure de projet est, et je ne peux pas la changer pour faire de module1 une construction indépendante.

Veuillez nous consulter. Apprécier ton aide!

Merci

Répondre

0

La méthode que vous essayez d'appeler serait défini dans TaskContainer. Comme vous pouvez le voir, ce n'est pas le cas.

Essayez:

project.getTasks().create(name: "module1", type: GradleBuild) { 
    buildFile = '../module1/build.gradle' 
    tasks = ['pluginJar'] 
} 

Comme vous pouvez le voir, j'ai omis appel à execute - vous ne devriez jamais appeler directement une tâche.

+0

Merci opale pour répondre! Voici la chose, le module1 est ici un gradle-plugin, et après que j'aie essayé votre suggestion, il dit maintenant pendant la construction qu'il ne peut pas trouver le plugin spécifié. –

+0

@AdeeJ et comment l'appeler directement, je veux dire invoquer 'execute()'? – Opal

+0

La construction boucle à l'infini. Chaque fois que build.gradle d'un module est appelé, gradle évalue tous les modules en utilisant leur fichier build.gradle respectif. Et quand build.gradle de module2 est évalué, il appelle à son tour le script de construction de module1. –

0

En réponse à Opal, ce n'est pas possible.