Не удалось найти метод compile () для аргументов Gradle


95

Слишком долго искал это решение, и я не уверен, пропустил ли я его или просто что-то неправильно набрал, но мой скрипт Gradle не скомпилируется. Я перехожу на Gradle и очень новичок в этом. Я очень привык использовать Maven для управления зависимостями, но пока мне кажется, что Gradle лучше всего. От запуска этого фрагмента кода:

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

ПРИМЕЧАНИЕ. У меня есть плагины java, maven, nexus, shadow и rebel.

Когда я запускаю свою задачу Gradle, я сталкиваюсь с этой ошибкой:

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

Если я удалю зависимость «MattLib» из своего проекта и снова вставлю ее как

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

Скрипт завершен, но у меня проблемы с зависимостями. Я прочитал здесь:

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

(Из главы 50 руководства Gradle, http://www.gradle.org/docs/current/userguide/dependency_management.html )

то, что у меня ДОЛЖНО работать, но я не понимаю, почему это не так.

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

Есть предположения?


Вы когда-нибудь понимали это? У меня точно такая же проблема. Кто-то на дискуссионном форуме рекомендовал поместить исключение внутри блока компиляции, но всякий раз, когда я пытаюсь это сделать, я получаю именно эту ошибку.
Trejkaz

Ответы:


7

Это должно быть exclude module: 'net.milkbowl:vault:1.2.27'(добавить module:), как описано в документации для DependencyHandlerссылки с http://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependencies(groovy.lang.Closure), потому что ModuleDependency.exclude(java.util.Map)метод используемый.


Оглядываясь назад все это время, я понимаю, что это самая вероятная проблема, с которой я столкнулся. С тех пор я, очевидно, далеко продвинулся, но после получения уведомлений о том, что этот вопрос все еще открыт, я думаю, что единственно правильным является указать это как «правильный» ответ, поскольку он кажется наиболее близким.
Ichbinjoe

167

Убедитесь, что вы редактируете правильный build.gradleфайл. Я получил эту ошибку при редактировании, android/build.gradleа не android/app/build.gradle.


7
У меня он тоже был не в том месте. Спасибо, что помогли мне!
igorrmotta 05

3
Что ты имеешь в виду под неправильным местом? Какой файл Gradle я должен редактировать?
guru_001

@ guru_001 Вы должны отредактировать android / app / build.gradle
Срикант Каруманагхат

1
превосходно. очень полезно для меня и других новичков в Gradle.
CowZow

1
Почему F .. они назвали его так же ??
Developerium

105

compileэто configurationобычно вводится плагином (скорее всего, плагином java). Взгляните на руководство пользователя gradle для получения подробной информации о конфигурациях. На данный момент добавление java-плагина поверх вашего скрипта сборки должно помочь:

apply plugin:'java'

порядок, в котором идет это определение, похоже, влияет на сборку; в моем случае я столкнулся с проблемой с тегом jar (), и заметка Рене помогла мне решить проблему.
vsrikarunyan 09

при работе с kotlin пришлось применить плагин apply plugin: "kotlin"
kotlin

Моим синтаксическим сахаром были плагины {id 'java'}
granadaCoder

8

В моем случае все compileутверждения каким-то образом выстроились в одну строку. разделение их на отдельные строки устранило проблему.


Это продолжает происходить со мной в Android Studio!
Бретт

да, если мы изменим свойства Gradle из диалогового окна настроек модуля, это произойдет
Ранджит Кумар

Правда. Проклятый генератор файлов gradle.build удаляет разделители новой строки в блоке зависимостей после некоторых манипуляций.
Маркус Марвелл

Да неужели? Давай, Google, какая ошибка, он удалил все мои новые строки, когда я проснулся и нажал кнопку запуска! это действительно дерьмовый человек ..
Pratik Jamariya

7

Надеюсь, что шаги ниже помогут

Добавьте зависимость в build.gradle на уровне проекта:

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

Добавьте плагин в build.gradle на уровне приложения:

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

build.gradle на уровне приложения:

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

1
При чем тут вопрос?
aarnaut


0

В моем случае мне пришлось удалить некоторые файлы, которые были созданы gradle в какой-то момент моего исследования, чтобы все работало. Итак, очистка после того, как испортилась, а затем все прошло нормально ...

Если вы столкнулись с этой проблемой в проекте git, сделайте git statusи удалите непроверенные файлы. (У меня elasticsearchбыла проблема с plugins/analysis-icu).

Gradle Version : 5.1.1


0

Для записи: я случайно включил автономную работу в разделе « Настройки» -> «Сборка, выполнение, развертывание» -> «Gradle» -> снимите флажок «Автономная работа» , но сообщение об ошибке вводило в заблуждение

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.