Respuestas:
La diferencia radica en el hecho de que ./gradlew
indica que está utilizando una envoltura de gradle. El envoltorio generalmente es parte de un proyecto y facilita la instalación de gradle. Si estaba usando gradle sin el contenedor, tendría que instalarlo manualmente, por ejemplo, en una Mac brew install gradle
y luego invocar gradle usando el gradle
comando. En ambos casos está utilizando gradle, pero el primero es más conveniente y garantiza la coherencia de la versión en diferentes máquinas.
Cada Wrapper está vinculado a una versión específica de Gradle, por lo que cuando ejecuta uno de los comandos anteriores para una versión de Gradle determinada, descargará la distribución de Gradle correspondiente y la usará para ejecutar la compilación.
Esto no solo significa que no tiene que instalar Gradle manualmente, sino que también está seguro de utilizar la versión de Gradle para la que está diseñada la compilación. Esto hace que sus compilaciones históricas sean más confiables
Lea más aquí: https://docs.gradle.org/current/userguide/gradle_wrapper.html
Además, Udacity tiene un video ordenado y de alto nivel que explica el concepto del envoltorio de gradle: https://www.youtube.com/watch?v=1aA949H-shk
gradlew
es un contenedor (w - carácter) que usa gradle
.
Under the hood gradlew
realiza tres cosas principales:
gradle
versión correctagradle
tareaCon Gradle Wrapper podemos distribuir / compartir un proyecto para que todos usen la misma versión y la funcionalidad de Gradle (compilar, construir, instalar ...) incluso si no se ha instalado.
Para crear una ejecución de contenedor:
gradle wrapper
Este comando genera:
gradle-wrapper.properties
contendrá la información sobre la distribución de Gradle