Nie można znaleźć metody compile () dla argumentów Gradle


95

Rozglądałem się teraz za tym rozwiązaniem o wiele za długo i nie jestem pewien, czy go przegapiłem, czy po prostu coś źle zrozumiałem, ale mój skrypt Gradle nie skompiluje się. Migruję do Gradle i jestem z nim bardzo nowy. Jestem bardzo przyzwyczajony do używania Mavena do zarządzania zależnościami, ale Gradle wydaje mi się na razie najlepszy. Od uruchomienia tego fragmentu kodu:

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

UWAGA: Mam zastosowane wtyczki java, maven, nexus, shadow i rebel.

Kiedy uruchamiam zadanie Gradle, napotykam ten błąd:

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

Jeśli usunę zależność „MattLib” z projektu i wstawię ją ponownie jako

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

Skrypt się kończy, ale mam problemy z zależnościami. Czytałem tutaj:

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

(Z rozdziału 50 z podręcznika Gradle, http://www.gradle.org/docs/current/userguide/dependency_management.html )

że to co mam POWINNO działać, ale jestem zdezorientowany, dlaczego tak nie jest.

gradle - wersja wyjściowa:

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

jakieś pomysły?


Czy kiedykolwiek to rozgryzłeś? Mam dokładnie ten sam problem. Ktoś na forum dyskusyjnym zalecił umieszczenie wykluczenia wewnątrz bloku kompilacji, ale ilekroć próbuję to zrobić, otrzymuję dokładnie ten błąd.
Trejkaz

Odpowiedzi:


7

Powinien być exclude module: 'net.milkbowl:vault:1.2.27'(dodać module:) tak, jak wyjaśniono w dokumentacji DependencyHandlerlinków z http://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependencies(groovy.lang.Closure), ponieważ ModuleDependency.exclude(java.util.Map)metoda jest używany.


Patrząc wstecz przez cały ten czas, jest to najbardziej prawdopodobny problem, jaki miałem. Od tego czasu oczywiście posunąłem się daleko, ale po otrzymaniu powiadomień, że to pytanie jest nadal otwarte, myślę, że jedyną właściwą odpowiedzią jest wskazanie tego jako „poprawnej” odpowiedzi, ponieważ wydaje się ona najbliższa.
Ichbinjoe

169

Upewnij się, że edytujesz poprawny build.gradleplik. Otrzymałem ten błąd podczas edycji android/build.gradlezamiast android/app/build.gradle.


7
Ja też miałem to w złym miejscu. Dziękuję za pomoc!
igorrmotta

3
co masz na myśli przez niewłaściwe miejsce? który plik gradle mam edytować?
guru_001

@ guru_001 Masz edytować android / app / build.gradle
Sreekanth Karumanaghat

1
świetny. bardzo pomocne dla mnie i dla innych osób, które dopiero zaczynają naukę.
CowZow

1
Dlaczego F ... nazwali to tak samo ??
Developerium

107

compilejest configurationzwykle wprowadzany przez wtyczkę (najprawdopodobniej wtyczkę java). Zapoznaj się z instrukcją obsługi gradle, aby uzyskać szczegółowe informacje na temat konfiguracji. Na razie dodanie wtyczki java na szczycie skryptu kompilacji powinno załatwić sprawę:

apply plugin:'java'

wydaje się, że kolejność, w jakiej jest sformułowana ta definicja, ma wpływ na kompilację; w moim przypadku napotkałem problem z tagiem jar (), a notatka Rene pomogła mi rozwiązać problem.
vsrikarunyan

podczas pracy z kotlinem musiałem zastosować wtyczkę kotlinapply plugin: "kotlin"
prayagupd

Moja składnia cukrowa to wtyczki {id 'java'}
granadaCoder

8

W moim przypadku wszystkie compilewypowiedzi zostały w jakiś sposób ułożone w jednym wierszu. oddzielenie ich w osobnych wierszach rozwiązało problem.


To ciągle mi się przytrafia w Android Studio!
Brett

tak, jeśli zmodyfikujemy właściwości gradle w oknie ustawień modułu, to się zdarza
Ranjith Kumar,

Prawdziwe. Cholerny generator plików gradle.build usuwa separatory nowej linii w bloku zależności po kilku manipulacjach.
Markus Marvell,

naprawdę? chodź w google, co za błąd, usunął wszystkie moje nowe linie, kiedy się obudziłem i nacisnąłem przycisk uruchamiania! to jest naprawdę gówniany człowiek ..
Pratik Jamariya

7

Mam nadzieję, że poniższe kroki pomogą

Dodaj zależność do build.gradle na poziomie projektu :

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

Dodaj wtyczkę do build.gradle na poziomie aplikacji :

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

build.gradle na poziomie aplikacji :

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

1
Co to ma wspólnego z pytaniem?
aarnaut


0

W moim przypadku musiałem usunąć niektóre pliki, które zostały utworzone przez Gradle w pewnym momencie mojej pracy, aby wszystko działało. Więc sprzątanie po zepsuciu, a potem wszystko poszło dobrze ...

Jeśli napotkałeś ten problem w projekcie git, zrób git statusi usuń niepoprawione pliki. (U mnie elasticsearchmiał problem z plugins/analysis-icu).

Gradle Version : 5.1.1


0

Dla przypomnienia: przypadkowo włączyłem pracę w trybie offline w obszarze Preferencje -> Kompilacja, wykonanie, wdrożenie -> Gradle -> odznacz opcję Praca w trybie offline , ale komunikat o błędzie był mylący

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.