No se pudo encontrar el método compile () para los argumentos Gradle


95

Busqué esta solución durante demasiado tiempo y no estoy seguro de si me lo perdí o simplemente me equivoqué en algo, pero mi script de Gradle no se compilará. Estoy migrando a Gradle y soy muy nuevo en él. Estoy muy acostumbrado a usar Maven para la gestión de dependencias, pero Gradle me parece mejor por ahora. De ejecutar este fragmento 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: Tengo aplicados los complementos java, maven, nexus, shadow y rebel.

Cuando ejecuto mi tarea de Gradle, encuentro este error:

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

Si elimino la dependencia "MattLib" de mi proyecto y la vuelvo a insertar como

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

El script se completa, pero tengo problemas de dependencia. Leí aquí:

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

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

que lo que tengo DEBERÍA funcionar, pero estoy confundido por qué no funciona.

gradle - salida de la versión:

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

¿Alguna idea?


¿Alguna vez resolviste esto? Tengo exactamente el mismo problema. Alguien en el foro de discusión recomendó colocar la exclusión dentro de un bloque de compilación, pero cada vez que intento hacerlo, aparece este error exacto.
Trejkaz

Respuestas:


7

Debería ser exclude module: 'net.milkbowl:vault:1.2.27'(agregar module:) como se explica en la documentación para el DependencyHandlerenlace desde http://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependencies(groovy.lang.Closure) porque el ModuleDependency.exclude(java.util.Map)método es usado.


Mirando hacia atrás todo este tiempo, este es el problema más probable que estaba teniendo. Desde entonces obviamente he avanzado mucho, pero después de recibir notificaciones de que esta pregunta aún estaba abierta, creo que es apropiado indicar esto como la respuesta 'correcta', ya que parece ser la más cercana.
Ichbinjoe

167

Asegúrese de que está editando el build.gradlearchivo correcto . Recibí este error al editar en android/build.gradlelugar de android/app/build.gradle.


7
Yo también lo tenía en el lugar equivocado. ¡Gracias por ayudarme!
igorrmotta

3
¿A qué te refieres con lugar incorrecto? ¿Qué archivo gradle se supone que debo editar?
guru_001

@ guru_001 Se supone que debes editar android / app / build.gradle
Sreekanth Karumanaghat

1
excelente. muy útil para mí y para otros que son nuevos en gradle.
CowZow

1
¿Por qué F .. lo llamaron igual?
Developerium

103

compilees un configurationque generalmente se introduce mediante un complemento (probablemente el complemento de Java). Eche un vistazo a la guía de usuario de Gradle para obtener detalles sobre las configuraciones. Por ahora, agregar el complemento de Java en la parte superior de su script de compilación debería funcionar:

apply plugin:'java'

el orden en el que se aplica esta definición parece tener un impacto en la construcción; en mi caso, enfrenté el problema con la etiqueta jar () y la nota de Rene me ayudó a resolver el problema.
vsrikarunyan

mientras trabajaba con kotlin, tuve que aplicar el complemento de apply plugin: "kotlin"
kotlin

Mi azúcar de sintaxis eran complementos {id 'java'}
granadaCoder

8

En mi caso, todas las compiledeclaraciones se han ordenado de alguna manera en una sola línea. separarlos en líneas individuales ha solucionado el problema.


¡Esto me sigue sucediendo en Android Studio!
Brett

sí, si modificamos las propiedades de gradle desde el cuadro de diálogo de configuración del módulo, sucede
Ranjith Kumar

Cierto. Maldito generador de archivos gradle.build elimina los separadores de nueva línea en el bloque de dependencias después de algunas manipulaciones.
Markus Marvell

¿Oh enserio? Vamos, Google, ¡qué error, eliminó todas mis líneas nuevas cuando me desperté y presioné el botón Ejecutar! esto es realmente un hombre de mierda ..
Pratik Jamariya

7

Espero que los siguientes pasos ayuden

Agrega la dependencia a tu build.gradle a nivel de proyecto:

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

Agregue el complemento a su build.gradle a nivel de aplicación:

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

build.gradle a nivel de aplicación:

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

1
¿Qué tiene esto que ver con la pregunta?
aarnaut

0

Archivo gradle incorrecto. El correcto es build.gradle en su carpeta 'aplicación'.


0

En mi caso, tuve que eliminar algunos archivos creados por gradle en algún momento de mi estudio para que todo funcionara. Entonces, limpiar después de estropear y luego funcionó bien ...

Si experimentó este problema en un proyecto de git, hágalo git statusy elimine los archivos no revisados. (Para mí elasticsearchtuve un problema con plugins/analysis-icu).

Gradle Version : 5.1.1


0

Solo para el registro: accidentalmente habilité el trabajo sin conexión en Preferencias -> Compilación, ejecución, implementación -> Gradle -> desmarque Trabajo sin conexión , pero el mensaje de error era engañoso

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.