¿Cómo instalar gradle y gradlew?

¿Cómo instalar gradle y gradlew?

Tengo problemas para instalar gradlew... Puedo usar el comando gradle simplemente escribiendo "gradle" en la Terminal, pero "gradlew" no hace nada. Instalé gradle usando

sudo apt install gradle

Y se instaló exitosamente. Tengo que usar "sudo gradle" y no "gradle" porque esto aparece cuando no uso sudo.

icebunny08@D3CRYPT3D:~$ gradle
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.gradle.internal.reflect.JavaMethod (file:/usr/share/gradle/lib/gradle-base-services-3.4.1.jar) to method java.lang.ClassLoader.getPackages()
WARNING: Please consider reporting this to the maintainers of org.gradle.internal.reflect.JavaMethod
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Starting a Gradle Daemon (subsequent builds will be faster)
:help

Welcome to Gradle 3.4.1.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

To see more detail about a task, run gradle help --task <task>

BUILD SUCCESSFUL

Total time: 5.017 secs

Mis problemas son si instalé Gradle correctamente y por qué no puedo usar el comando "gradlew". Este es el resultado cuando uso "gradlew".

icebunny08@D3CRYPT3D:~$ gradlew

Command 'gradlew' not found, did you mean:

  command 'gradle' from deb gradle

Try: sudo apt install <deb name>

Respuesta1

Las advertencias que recibe al ejecutar el comando gradle se deben a algún problema maravilloso con JDK 9 o posterior, como se describeaquí.

Si estas advertencias son un problema para usted, puede utilizar la solución alternativa descrita para hacerlas desaparecer:

Puede agregar los siguientes argumentos al script de arranque de Java o JAVA_OPTS para suprimir esta advertencia:

--add-opens=java.base/java.lang=TODO SIN NOMBRE --add-opens=java.base/java.lang.invoke=TODO SIN NOMBRE


Ahora sobre gradlew.

Gradlew es una envoltura alrededor de Gradle. Está vinculado a un proyecto, no a su estación de trabajo. En otras palabras, cada proyecto de Gradle que desarrolle podría tener un contenedor de Gradle. El propósito de gradlew es hacer que el proyecto sea portátil (es decir, los desarrolladores no necesitan instalar gradle en su estación de trabajo) y confiable (es decir, la misma versión de gradle para todos). El script contenedor descargará la versión especificada de gradle para su proyecto y luego la ejecutará. Todo esto se describe ensu documentacion.

Lo que ha hecho en su caso es instalar gradle en su estación de trabajo, de forma global. La instalación de Gradle no viene con Gradlew, ya que Gradlew debe agregarse a cada proyecto de Gradle de su elección, como se describe.aquí. Simplemente tienes que ejecutar el siguiente comando en tu proyecto:

gradle wrapper

Esto creará el script contenedor para su proyecto gradle. Obviamente, necesita instalar gradle para ejecutar este comando (ya lo instaló), pero si confirma el resultado y lo comparte con otros desarrolladores, pueden usar el script gradlew sin instalar gradle.

En tu caso, terminas con dos posibilidades:

  • Ejecute comandos de Gradle en su proyecto, como gradle clean. Puedes hacer esto porque instalaste gradle manualmente a nivel global.
  • ejecute comandos gradlew en su proyecto, como gradlew clean. Puede hacer esto porque creó el script contenedor gradle wrapperen primer lugar.

Ambos deberían dar el mismo resultado si la versión de Gradle es la misma.

información relacionada