Não foi possível encontrar o método compile () para os argumentos Gradle

95

Procurei por essa solução por muito tempo agora e não tenho certeza se a perdi ou apenas digitei incorretamente alguma coisa, mas meu script do Gradle não compila. Estou migrando para o Gradle e sou muito novo nele. Estou muito acostumado a usar o Maven para gerenciamento de dependências, mas o Gradle parece ser o melhor para mim por enquanto. Ao executar este snippet de código:

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: Eu tenho os plug-ins java, maven, nexus, shadow e rebel aplicados.

Quando executo minha tarefa do Gradle, encontro este erro:

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

Se eu remover a dependência "MattLib" do meu projeto e reinseri-la como

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

O script é concluído, mas tenho problemas de dependência. Eu li aqui:

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

(Do Capítulo 50 do Manual do Gradle, http://www.gradle.org/docs/current/userguide/dependency_management.html )

que o que tenho DEVE funcionar, mas estou confuso por que não funciona.

saída gradle --version:

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

Alguma ideia?

Ichbinjoe
fonte
Você já descobriu isso? Eu tenho exatamente o mesmo problema. Alguém no fórum de discussão recomendou colocar a exclusão dentro de um bloco de compilação, mas sempre que tento fazer isso, recebo exatamente este erro.
Trejkaz

Respostas:

7

Deve ser exclude module: 'net.milkbowl:vault:1.2.27'(adicionar module:) conforme explicado na documentação para DependencyHandlerlink de http://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependencies(groovy.lang.Closure) porque o ModuleDependency.exclude(java.util.Map)método é usava.

Radim
fonte
Olhando para trás, esse é o problema mais provável que eu estava tendo. Desde então, obviamente, mudei de assunto, mas depois de receber notificações de que esta questão ainda estava em aberto, acho que é apropriado indicar esta como a resposta 'correta', pois parece ser a mais próxima.
Ichbinjoe
167

Certifique-se de que está editando o build.gradlearquivo correto . Recebi este erro ao editar, em android/build.gradlevez de android/app/build.gradle.

RussellStewart
fonte
7
Eu também coloquei no lugar errado. Obrigado por me ajudar!
igorrmotta
3
O que você quer dizer com lugar errado? Qual arquivo Gradle devo editar?
guru_001
@ guru_001 Você deve editar android / app / build.gradle
Sreekanth Karumanaghat
1
excelente. muito útil para mim e outras pessoas que são novas no Gradle.
CowZow
1
Por que o F .. eles deram o mesmo nome ??
Developerium
103

compileé um configurationque geralmente é introduzido por um plug-in (provavelmente o plug-in java). Dê uma olhada no guia do usuário do gradle para obter detalhes sobre as configurações. Por enquanto, adicionar o plugin java no topo do seu script de compilação deve resolver o problema:

apply plugin:'java'
Rene Groeschke
fonte
a ordem em que essa definição vai parece ter um impacto na construção; no meu caso, enfrentei o problema com a tag jar () e a nota de Rene me ajudou a resolver o problema.
vsrikarunyan
enquanto trabalhava com o kotlin, tive que aplicar o plugin do apply plugin: "kotlin"
kotlin
Minha sintaxe sugar era plugins {id 'java'}
granadaCoder
8

No meu caso, todas as compiledeclarações de alguma forma foram organizadas em uma única linha. separá-los em linhas individuais corrigiu o problema.

Rohit Mandiwal
fonte
Isso continua acontecendo comigo no Android Studio!
Brett
sim, se modificarmos as propriedades do gradle na caixa de diálogo de configurações do módulo, isso acontecerá
Ranjith Kumar
Verdade. O maldito gerador de arquivo gradle.build remove separadores de nova linha no bloco de dependências após algumas manipulações.
Markus Marvell
sério? venha google que bug, ele removeu todas as minhas novas linhas quando eu acordei e apertei o botão run! este é realmente um homem de merda ..
Pratik Jamariya
7

Espero que os passos abaixo ajudem

Adicione a dependência ao build.gradle de nível de projeto:

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

Adicione o plug-in ao build.gradle de nível de aplicativo:

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

build.gradle de nível de aplicativo:

dependencies {
        compile 'com.google.android.gms:play-services-auth:9.8.0'
}
Priyanshu Singh
fonte
1
O que isso tem a ver com a pergunta?
aarnaut
0

Arquivo gradle incorreto. O certo é build.gradle na pasta 'app'.

letanthang
fonte
0

No meu caso, tive que remover alguns arquivos que foram criados pelo gradle em algum ponto do meu estudo para fazer as coisas funcionarem. Então, limpando depois de bagunçar e depois tudo correr bem ...

Se você teve esse problema em um projeto git, faça git statuse remova os arquivos não revisados. (Para mim elasticsearchtinha um problema com plugins/analysis-icu).

Gradle Version : 5.1.1

dr0i
fonte
0

Apenas para registro: eu acidentalmente habilitei o trabalho off-line em Preferências -> Build, Execution, Deployment -> Gradle -> desmarque o trabalho off-line , mas a mensagem de erro era enganosa

longi
fonte