Gradle не может внедрить зависимости в подпроекты, используя fileTree - PullRequest
0 голосов
/ 14 января 2011

Может быть, я что-то упускаю из-за того, как работает Gradle.Здесь у меня есть родительский проект, который содержит только конфигурацию, т.е. при его создании не будет создаваться артефакт, он просто управляет и создает все свои подпроекты.

Теперь подпроекты имеют общую конфигурацию зависимостейпоэтому я решил, что я бы сделал в build.gradle корневого проекта:

subprojects {
  dependencies {
    compile fileTree(dir: 'lib', includes: ['*.jar'])
  }    
}

, что, однако, не работает, происходит сбой с довольно неясным сообщением об ошибке:

Возникла проблема при оценке корневого проекта 'qype-android' Причина: нет подписи метода: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.compile () применимо для типов аргументов: (org.gradle.api.internal.file.DefaultConfigurableFileTree) значения: [набор файлов 'lib'] Возможные решения: module (java.lang.Object)

после некоторых проб и ошибок я мог бы «исправить» эту проблемуприменив плагин 'java' к родительскому проекту.

Почему?Я не вижу в документации Gradle, что для зависимости fileTree требуется плагин Java.Тем не менее, зачем мне это нужно для проекта, который внедряет конфигурацию, а не для проекта, который настраивается (обратите внимание, что все подпроекты сами применяют плагин Java)?

Означает ли это, чтоесли у меня есть N разных подпроектов, которые имеют различную природу, и применяют разные плагины, то родительские проекты должны всегда применять набор всех плагинов существ, также используемых где-то для себя?

1 Ответ

2 голосов
/ 14 января 2011

Это не fileTree, требующий плагин 'Java'.

Сообщение об ошибке жалуется на неопределенную compile конфигурацию зависимости. Плагин Java определяет эту конфигурацию для вас, так что вы можете добавить в нее зависимости (включая ваше fileTree).

...