Что такое область зависимости по умолчанию в Gradle на Android?

В Gradle в Android Studio я заметил, что предоставление области зависимости необязательно. Например:

dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' 'org.hamcrest:hamcrest-core:1.3' 'org.hamcrest:hamcrest-library:1.3' } 

Обратите внимание, что в последних двух библиотеках отсутствует область компиляции. Я оставил его пустым, и я все еще мог синхронизировать град. Какова область по умолчанию, если здесь ничего не указано?

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

  • На самом деле вам не нужна зависимость
  • Вы используете плагин gradle, который обрабатывает красиво немаркированные зависимости
  • Или (более вероятно), зависимость уже находится в кеше сборки или частичной сборки, поэтому компилятор все еще может находить классы, но будет разорван, если вы очистите проект.

Связанная документация по конфигурации зависимостей для gradle