Что Gradle компилирует файлы, а coppile fileTree работает - PullRequest
0 голосов
/ 21 ноября 2018

Это рабочий код скрипта сборки gradle:

dependencies {
    compile files("dir/libs", "dir/libs2")
    compile fileTree(dir: "libs", include: "*.jar")
}

Насколько я понимаю,

зависимости - это метод, который принимает замыкание, устанавливает егоделегировать свойство объекту DependencyHandler и выполнить его.

compile - это объект конфигурации, принадлежащий проекту

Но что такое файлы и fileTree ?

1 Ответ

0 голосов
/ 21 ноября 2018

Первое, что нужно знать, это то, что Gradle использует AST для dependecies синтаксиса закрытия , этот ответ здесь хорошо объясняет, что такое AST.

Я поговорю оВ приведенном выше фрагменте кода вы правы относительно того, какой блок кода делегируется DependencyHandler, строка определяется здесь как

Чтобы объявить конкретную зависимость для конфигурацииВы можете использовать следующий синтаксис:

dependencies {
     configurationName dependencyNotation1, dependencyNotation2, ...
 }

Здесь важно отметить, что приведенный выше код синтаксис , предоставленный Gradle, чтобы сделать код чистым и лаконичным.Вы также можете использовать метод DependencyHandler.add(String,Object) Например

dependencies {
          add('compile', fileTree(dir: "libs", include: "*.jar"))
  }

По сравнению с приведенным выше синтаксисом, верхний синтаксис позволяет вам добавлять несколько зависимостей в одном выражении и являетсянамного более чистый.

fileTree(), files() и т. д. - методы, определенные в Project.Начиная с DependencyHandler.add(String,Object), второй аргумент имеет тип Object, так как метод, а также синтаксис зависимостей может принимать ряд типов зависимостей, таких как ProjectDependency, другие Configuration s и FileCollection и его подчиненныетипы, как вы упомянули ConfigurableFileCollection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...