Methode compile () für Argumente Gradle konnte nicht gefunden werden

95

Ich habe mich viel zu lange nach dieser Lösung umgesehen und bin mir nicht sicher, ob ich sie verpasst oder nur etwas falsch eingegeben habe, aber mein Gradle-Skript wird nicht kompiliert. Ich migriere nach Gradle und bin sehr neu darin. Ich bin es sehr gewohnt, Maven für das Abhängigkeitsmanagement zu verwenden, aber Gradle scheint mir im Moment am besten zu sein. Aus dem Ausführen dieses Codeausschnitts:

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'])
}

HINWEIS: Ich habe die Plugins Java, Maven, Nexus, Shadow und Rebel angewendet.

Wenn ich meine Gradle-Aufgabe ausführe, tritt folgender Fehler auf:

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

Wenn ich die "MattLib" -Abhängigkeit aus meinem Projekt entferne und sie wieder einfüge als

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

Das Skript ist abgeschlossen, aber ich habe Abhängigkeitsprobleme. Ich habe hier nachgelesen:

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

(Aus Kapitel 50 Aus dem Gradle-Handbuch, http://www.gradle.org/docs/current/userguide/dependency_management.html )

Das, was ich habe, sollte funktionieren, aber ich bin verwirrt, warum es nicht funktioniert.

gradle --version ausgabe:

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

Irgendwelche Gedanken?

Ichbinjoe
quelle
Hast du das jemals herausgefunden? Ich habe genau das gleiche Problem. Jemand im Diskussionsforum hat empfohlen, Ausschluss in einen Kompilierungsblock einzufügen, aber wenn ich dies versuche, wird genau dieser Fehler angezeigt.
Trejkaz

Antworten:

7

Es sollte wie in der Dokumentation für ( von http://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependencies(groovy.lang.Closure) verlinkt exclude module: 'net.milkbowl:vault:1.2.27'(hinzugefügt module:) werden, da die Methode ist gebraucht.DependencyHandlerModuleDependency.exclude(java.util.Map)

Radim
quelle
Wenn ich die ganze Zeit zurückblicke, ist dies das wahrscheinlichste Problem, das ich hatte. Ich bin seitdem offensichtlich weit gegangen, aber nachdem ich benachrichtigt wurde, dass diese Frage noch offen war, denke ich, dass es nur richtig ist, dies als die 'richtige' Antwort anzugeben, da sie am nächsten zu sein scheint.
Ichbinjoe
167

Stellen Sie sicher, dass Sie die richtige build.gradleDatei bearbeiten . Ich habe diesen Fehler beim Bearbeiten erhalten android/build.gradleund nicht android/app/build.gradle.

RussellStewart
quelle
7
Ich hatte es auch am falschen Ort. Danke, dass du mir geholfen hast!
Igorrmotta
2
Was meinst du mit falscher Stelle? Welche Gradle-Datei soll bearbeitet werden?
Guru_001
@ Guru_001 Sie sollen android / app / build.gradle
Sreekanth Karumanaghat
1
Ausgezeichnet. sehr hilfreich für mich und andere, die neu in gradle sind.
CowZow
1
Warum die F .. sie nannten es das gleiche?
Developerium
103

compileist ein configurationPlugin, das normalerweise von einem Plugin (höchstwahrscheinlich dem Java-Plugin) eingeführt wird. Weitere Informationen zu Konfigurationen finden Sie im Gradle-Benutzerhandbuch. Im Moment sollte das Hinzufügen des Java-Plugins über Ihrem Build-Skript den Trick machen:

apply plugin:'java'
Rene Groeschke
quelle
Die Reihenfolge, in der diese Definition lautet, scheint sich auf den Build auszuwirken. In meinem Fall hatte ich das Problem mit dem jar () -Tag und Renes Notiz half mir, das Problem zu beheben.
vsrikarunyan
während der Arbeit mit Kotlin musste Kotlin Plugin anwendenapply plugin: "kotlin"
Prayagupd
Mein
Syntaxzucker
8

In meinem Fall sind alle compileAussagen irgendwie in einer einzigen Zeile angeordnet. Das Trennen in einzelne Zeilen hat das Problem behoben.

Rohit Mandiwal
quelle
Das passiert mir immer wieder auf Android Studio!
Brett
Ja, wenn wir die Gradle-Eigenschaften im Dialogfeld "Moduleinstellungen" ändern, geschieht dies
Ranjith Kumar,
Wahr. Der verdammte gradle.build-Dateigenerator entfernt nach einigen Manipulationen Zeilenumbruchtrennzeichen im Abhängigkeitsblock.
Markus Marvell
Ja wirklich? Komm auf Google, was für ein Fehler, es entfernte alle meine neuen Zeilen, als ich aufwachte und den Run-Button drückte! Das ist wirklich ein
Scheißmann
7

Hoffnung Die folgenden Schritte helfen

Fügen Sie die Abhängigkeit zu Ihrem build.gradle auf Projektebene hinzu:

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

Fügen Sie das Plugin zu build.gradle auf App-Ebene hinzu:

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

build.gradle auf App-Ebene :

dependencies {
        compile 'com.google.android.gms:play-services-auth:9.8.0'
}
Priyanshu Singh
quelle
1
Was hat das mit der Frage zu tun?
Aarnaut
0

Falsche Gradle-Datei. Das richtige ist build.gradle in Ihrem 'App'-Ordner.

Letanthang
quelle
0

In meinem Fall musste ich einige Dateien entfernen, die irgendwann in meiner Studie von gradle erstellt wurden, damit die Dinge funktionieren. Also, aufräumen nach dem Durcheinander und dann lief es gut ...

Wenn dieses Problem in einem Git-Projekt git statusaufgetreten ist , entfernen Sie die nicht überarbeiteten Dateien. (Für mich elasticsearchhatte ein Problem mit plugins/analysis-icu).

Gradle Version : 5.1.1

dr0i
quelle
0

Nur zur Veranschaulichung : Ich habe versehentlich die Offline-Arbeit unter Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Gradle -> Offline-Arbeit deaktivieren aktiviert , aber die Fehlermeldung war irreführend

Longi
quelle