Impossible de trouver la méthode compile () pour les arguments Gradle


95

J'ai cherché cette solution pendant trop longtemps maintenant, et je ne suis pas sûr si je l'ai ratée ou si j'ai simplement mal saisi quelque chose, mais mon script Gradle ne se compilera pas. Je suis en train de migrer vers Gradle, et je suis très nouveau avec. Je suis très habitué à utiliser Maven pour la gestion des dépendances, mais Gradle me semble le meilleur pour le moment. Après avoir exécuté cet extrait de code:

dependencies {
  compile group: 'org.bukkit', name: 'bukkit', version: '1.7.9-R0.1-SNAPSHOT'
  compile('io.ibj:MattLib:1.1-SNAPSHOT') {
    exclude group: 'de.bananaco'
    exclude 'net.milkbowl:vault:1.2.27'
  }
  compile group: 'net.citizensnpcs', name: 'citizens', version: '2.0.12'
  compile group: 'com.sk89q', name: 'worldedit', version: '5.6.1'
  compile group: 'com.sk89q', name: 'worldguard', version: '5.9'
  compile group: 'net.milkbowl', name: 'vault', version: '1.2.12'
  compile fileTree(dir: 'libs', includes: ['*.jar'])
}

REMARQUE: les plugins java, maven, nexus, shadow et rebel sont appliqués.

Lorsque j'exécute ma tâche Gradle, je rencontre cette erreur:

Could not find method compile() for arguments [[io.ibj:MattLib:1.1-SNAPSHOT], build_1b5iofu9r9krp7o8mme0dqo9l$_run_closure2_closure8@66fb45e5] on root project 'project'

Si je supprime la dépendance "MattLib" de mon projet et la réinsère en tant que

compile 'io.ibj:MattLib:1.1-SNAPSHOT'

Le script se termine, mais j'ai des problèmes de dépendance. J'ai lu ici:

dependencies {
  compile("org.gradle.test.excludes:api:1.0") {
    exclude module: 'shared'
  }
}

(Extrait du chapitre 50 du manuel Gradle, http://www.gradle.org/docs/current/userguide/dependency_management.html )

que ce que j'ai DEVRAIT fonctionner, mais je ne comprends pas pourquoi cela ne fonctionne pas.

gradle --version sortie:

Groovy:       1.8.6
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
Ivy:          2.2.0
JVM:          1.8.0_05 (Oracle Corporation 25.5-b02)
OS:           Windows 7 6.1 amd64

Des pensées?


Avez-vous déjà compris cela? J'ai exactement le même problème. Quelqu'un sur le forum de discussion a recommandé de placer l'exclusion dans un bloc de compilation, mais chaque fois que j'essaye de le faire, j'obtiens cette erreur exacte.
Trejkaz

Réponses:


7

Ça devrait être exclude module: 'net.milkbowl:vault:1.2.27' (ajouter module:) comme expliqué dans la documentation pour DependencyHandlerlié à partir de http://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependencies(groovy.lang.Closure) car la ModuleDependency.exclude(java.util.Map)méthode est utilisé.


En regardant en arrière tout ce temps, c'est le problème le plus probable que j'avais. Depuis, j'ai évidemment beaucoup évolué, mais après avoir reçu des notifications indiquant que cette question était toujours ouverte, je pense qu'il est juste de l'indiquer comme la réponse `` correcte '', car elle semble être la plus proche.
Ichbinjoe

167

Assurez-vous que vous modifiez le build.gradlefichier correct . J'ai reçu cette erreur lors de l'édition android/build.gradleplutôt que android/app/build.gradle.


7
Je l'avais aussi au mauvais endroit. Merci pour votre aide!
igorrmotta

3
qu'est-ce que tu veux dire par mauvais endroit? quel fichier gradle suis censé modifier?
guru_001

@ guru_001 Vous êtes censé éditer android / app / build.gradle
Sreekanth Karumanaghat

1
excellent. très utile pour moi et pour d'autres qui sont nouveaux à graduer.
CowZow

1
Pourquoi le F .. ils l'ont nommé de la même manière ??
Developerium

103

compileest un configurationqui est généralement introduit par un plugin (très probablement le plugin java) Jetez un œil au guide d'utilisation gradle pour plus de détails sur les configurations. Pour l'instant, ajouter le plugin java au-dessus de votre script de construction devrait faire l'affaire:

apply plugin:'java'

l'ordre dans lequel cette définition va semble avoir un impact sur la construction; dans mon cas, j'ai rencontré le problème avec la balise jar () et la note de René m'a aidé à résoudre le problème.
vsrikarunyan

tout en travaillant avec kotlin, a dû appliquer le plugin apply plugin: "kotlin"
kotlin

Mon sucre de syntaxe était des plugins {id 'java'}
granadaCoder

8

Dans mon cas, toutes les compiledéclarations sont en quelque sorte organisées sur une seule ligne. les séparer en lignes individuelles a résolu le problème.


Cela n'arrête pas de m'arriver sur Android Studio!
Brett

oui si nous modifions les propriétés de gradle à partir de la boîte de dialogue des paramètres du module, cela se produit
Ranjith Kumar

Vrai. Le générateur de fichiers gradle.build supprime les séparateurs de nouvelle ligne dans le bloc de dépendances après quelques manipulations.
Markus Marvell

Oh vraiment? allez sur google quel bug, il a supprimé toutes mes nouvelles lignes quand je me suis réveillé et j'ai appuyé sur le bouton d'exécution! c'est vraiment un homme de merde ..
Pratik Jamariya

7

Les étapes de Hope below vous aideront

Ajoutez la dépendance à votre build.gradle au niveau du projet:

classpath 'com.google.gms:google-services:3.0.0'

Ajoutez le plugin à votre build.gradle au niveau de l' application:

apply plugin: 'com.google.gms.google-services'

build.gradle au niveau de l' application:

dependencies {
        compile 'com.google.android.gms:play-services-auth:9.8.0'
}

1
Qu'est-ce que cela a à voir avec la question?
aarnaut

0

Mauvais fichier gradle. Le bon est build.gradle dans votre dossier «app».


0

Dans mon cas, j'ai dû supprimer certains fichiers créés par gradle à un moment donné de mon étude pour que les choses fonctionnent. Donc, nettoyer après avoir raté et puis ça s'est bien passé ...

Si vous avez rencontré ce problème dans un projet git, faites git statuset supprimez les fichiers non révisés. (Pour moi, j'ai elasticsearcheu un problème avec plugins/analysis-icu).

Gradle Version : 5.1.1


0

Juste pour mémoire: j'ai accidentellement activé le travail hors ligne sous Préférences -> Construction, exécution, déploiement -> Gradle -> décochez Travail hors ligne , mais le message d'erreur était trompeur

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.