Impossibile trovare il metodo compile () per gli argomenti Gradle


95

Ho cercato questa soluzione per troppo tempo ormai, e non sono sicuro di averla persa o se ho semplicemente scritto male qualcosa, ma il mio script Gradle non verrà compilato. Sto migrando a Gradle e sono molto nuovo con esso. Sono molto abituato a usare Maven per la gestione delle dipendenze, ma Gradle mi sembra il migliore per ora. Dall'esecuzione di questo frammento di codice:

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

NOTA: ho applicato i plugin java, maven, nexus, shadow e rebel.

Quando eseguo la mia attività Gradle, riscontro questo errore:

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

Se rimuovo la dipendenza "MattLib" dal mio progetto e la reinserisco come

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

Lo script viene completato, ma ho problemi di dipendenza. Ho letto qui:

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

(Dal capitolo 50 del Manuale di Gradle, http://www.gradle.org/docs/current/userguide/dependency_management.html )

quello che ho DOVREBBE funzionare, ma sono confuso perché non lo fa.

gradle --version output:

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

qualche idea?


L'hai mai capito? Ho lo stesso identico problema. Qualcuno nel forum di discussione ha consigliato di inserire l'esclusione all'interno di un blocco di compilazione, ma ogni volta che provo a farlo, ottengo questo errore esatto.
Trejkaz

Risposte:


7

Dovrebbe essere exclude module: 'net.milkbowl:vault:1.2.27'(aggiungi module:) come spiegato nella documentazione per il DependencyHandlercollegamento da http://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependencies(groovy.lang.Closure) perché il ModuleDependency.exclude(java.util.Map)metodo è Usato.


Guardando indietro per tutto questo tempo, questo è il problema più probabile che stavo avendo. Da allora sono ovviamente andato molto avanti, ma dopo aver ricevuto notifiche che questa domanda era ancora aperta, penso che sia giusto indicarla come la risposta "corretta", poiché sembra essere la più vicina.
Ichbinjoe

167

Assicurati di modificare il build.gradlefile corretto . Ho ricevuto questo errore durante la modifica android/build.gradleanziché android/app/build.gradle.


7
Anch'io l'avevo nel posto sbagliato. Grazie per avermi aiutato!
igorrmotta

3
cosa intendi per posto sbagliato? quale file gradle dovrei modificare?
guru_001

@ guru_001 Dovresti modificare android / app / build.gradle
Sreekanth Karumanaghat

1
eccellente. molto utile per me e per gli altri che sono nuovi al gradle.
CowZow

1
Perché la F .. l'hanno chiamata lo stesso ??
Developerium

103

compileè un configurationplugin che di solito viene introdotto da un plugin (molto probabilmente il plugin java) Dai un'occhiata alla gradle userguide per i dettagli sulle configurazioni. Per ora l'aggiunta del plugin java in cima allo script di build dovrebbe fare il trucco:

apply plugin:'java'

l'ordine in cui va questa definizione sembra avere un impatto sulla build; nel mio caso, ho affrontato il problema con il tag jar () e la nota di Rene mi ha aiutato a risolvere il problema.
vsrikarunyan

mentre lavoravo con kotlin, ho dovuto applicare il plugin apply plugin: "kotlin"
kotlin

Il mio zucchero di sintassi era plugins {id 'java'}
granadaCoder

8

Nel mio caso, tutte le compileaffermazioni sono state in qualche modo disposte su un'unica riga. separandoli in singole righe ha risolto il problema.


Questo continua a succedere a me su Android Studio!
Brett

sì, se modifichiamo le proprietà gradle dalla finestra di dialogo delle impostazioni del modulo, succede
Ranjith Kumar

Vero. Il maledetto generatore di file gradle.build rimuove i separatori di nuova riga nel blocco delle dipendenze dopo alcune manipolazioni.
Markus Marvell

Oh veramente? vieni su google che bug, ha rimosso tutte le mie nuove righe quando mi sono svegliato e ho premuto il pulsante di esecuzione! questo è davvero un uomo di merda ..
Pratik Jamariya

7

Spero che i passaggi seguenti siano di aiuto

Aggiungi la dipendenza al tuo build.gradle a livello di progetto:

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

Aggiungi il plug-in al tuo build.gradle a livello di app:

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

build.gradle a livello di app:

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

1
Cosa c'entra questo con la domanda?
Aarnaut

0

File gradle sbagliato. Quello giusto è build.gradle nella tua cartella "app".


0

Nel mio caso ho dovuto rimuovere alcuni file che sono stati creati da gradle ad un certo punto del mio studio per far funzionare le cose. Quindi, ripulire dopo aver sbagliato e poi è andato tutto bene ...

Se hai riscontrato questo problema in un progetto git, git statusesegui e rimuovi i file non sottoposti a revisione. (Per me ha elasticsearchavuto un problema con plugins/analysis-icu).

Gradle Version : 5.1.1


0

Solo per la cronaca: ho accidentalmente abilitato il lavoro offline in Preferenze -> Build, Execution, Deployment -> Gradle -> deseleziona Offline Work , ma il messaggio di errore era fuorviante

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.