Разница между использованием gradlew и gradle

229

В чем разница между использованием gradlewи gradleили они одинаковы?

megalucio
источник

Ответы:

225

Разница заключается в том, что ./gradlewвы используете упаковщик Gradle. Оболочка, как правило, является частью проекта, и это облегчает установку Gradle. Если бы вы использовали gradle без оболочки, вам пришлось бы установить его вручную - например, на Mac, brew install gradleа затем вызвать gradle с помощью gradleкоманды. В обоих случаях вы используете gradle, но первый более удобен и обеспечивает согласованность версий на разных машинах.

Каждый Wrapper привязан к определенной версии Gradle, поэтому при первом запуске одной из приведенных выше команд для данной версии Gradle он загрузит соответствующий дистрибутив Gradle и использует его для выполнения сборки.

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

Узнайте больше здесь - https://docs.gradle.org/current/userguide/gradle_wrapper.html

Кроме того, в Udacity есть аккуратное видео высокого уровня, объясняющее концепцию упаковщика gradle - https://www.youtube.com/watch?v=1aA949H-shk

Abhijit
источник
8
Возможно, я читаю это неправильно, но для меня это звучит как красный флаг. Похоже, что Gradle не имеет обратной совместимости или развивается очень быстро (и нестабильно). Что происходит с CI-серверами, которые не имеют доступа к Интернету?
Импалер
@TheImpaler Я думаю, вам нужно установить все необходимые версии Gradle, как если бы Wrapper имел доступ к Интернету.
Руслан
46

gradlewэто обертка (w - символ), которая использует gradle.

Под капотом gradlewвыполняет три основные вещи:

  • Скачайте и установите правильную gradleверсию
  • Разбери аргументы
  • Вызов gradleзадачи

Используя Gradle Wrapper, мы можем распространять / передавать проект всем, чтобы использовать одну и ту же версию и функциональность Gradle (компилировать, собирать, устанавливать ...), даже если он не был установлен.

Чтобы создать оболочку, выполните:

gradle wrapper

Эта команда генерирует:

gradle-wrapper.properties будет содержать информацию о распределении Gradle

yoAlex5
источник