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?


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.


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.


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'

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.


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

1
O que isso tem a ver com a pergunta?
— aarnaut

0

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


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


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.