Не вдалося знайти метод 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 - вихідний вихід:

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

Будь-які думки?


Ви коли-небудь це зрозуміли? У мене точно така ж проблема. Хтось на дискусійному форумі рекомендував розмістити виключення всередині блоку компіляції, але щоразу, коли я намагаюся це зробити, я отримую саме цю помилку.
Трейказ,

Відповіді:


7

Це повинно бути exclude module: 'net.milkbowl:vault:1.2.27'(додати module:), як пояснено в документації для DependencyHandlerпосилання на http://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependitions(groovy.lang.Closure), оскільки ModuleDependency.exclude(java.util.Map)метод є використовується.


Озираючись весь цей час, це найімовірніша проблема, з якою я стикався. З тих пір я, очевидно, далеко пішов далі, але після отримання повідомлень про те, що це питання все ще було відкритим, я вважаю єдиним правильним вказати це як „правильну” відповідь, оскільки воно видається найближчим.
Ічбіньое

167

Переконайтесь, що ви редагуєте правильний build.gradleфайл. Я отримав цю помилку під час редагування, android/build.gradleа не android/app/build.gradle.


7
У мене це теж було не в тому місці. Дякуємо за допомогу!
igorrmotta

3
Ват, ти маєш на увазі неправильне місце? який файл gradle повинен редагувати?
guru_001

@ guru_001 Ви повинні редагувати android / app / build.gradle
Sreekanth Karumanaghat

1
відмінний. дуже корисно для мене та інших, хто новачок у градації.
CowZow

1
Чому F .. вони назвали його однаково ??
Developerium

103

compile- це configurationте, що зазвичай вводиться плагіном (швидше за все, плагіном Java). Подивіться на посібник користувача gradle, щоб отримати докладнішу інформацію про конфігурації. Наразі додавання плагіна Java поверх сценарію збірки повинно зробити трюк:

apply plugin:'java'

порядок, у якому йде це визначення, мабуть, впливає на склад; у моєму випадку я зіткнувся з проблемою з тегом jar (), і примітка Рене допомогла мені вирішити проблему.
vsrikarunyan

працюючи з kotlin, довелося застосувати плагін apply plugin: "kotlin"
kotlin

Мій синтаксичний цукор - плагіни {id 'java'}
granadaCoder

8

У моєму випадку всі compileтвердження якимось чином розташовані в одному рядку. поділ їх на окремі рядки вирішив проблему.


Це постійно відбувається зі мною в Android Studio!
Бретт

так, якщо ми модифікуємо властивості gradle з діалогового вікна налаштувань модуля, це трапляється
Ранджит Кумар

Правда. Проклятий генератор файлів gradle.build видаляє розділювачі нового рядка в блоці залежностей після деяких маніпуляцій.
Markus Marvell,

о справді? давай на Google, яка помилка, вона видалила всі мої нові рядки, коли я прокинувся і натиснув кнопку запуску! це справді лайна людина ..
Пратік Джамарія

7

Сподіваюся, допоможуть нижченаведені кроки

Додайте залежність до свого проекту.gradle на рівні проекту:

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

Додайте плагін до свого build.gradle на рівні програми:

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

app. level build.gradle:

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

1
Яке відношення це має до питання?
арнавт

0

Неправильний файл gradle. Правильним є build.gradle у вашій папці 'app'.


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.