Como instalar o gradle e o gradlew?

Como instalar o gradle e o gradlew?

Estou tendo problemas para instalar o gradlew... Posso usar o comando gradle simplesmente digitando "gradle" no Terminal, mas "gradlew" não faz nada. Eu instalei o gradle usando

sudo apt install gradle

E foi instalado com sucesso. Tenho que usar "sudo gradle" e não "gradle" porque isso aparece quando não uso o 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

Meus problemas são se instalei o Gradle corretamente e por que não consigo usar o comando "gradlew". Esta é a saída quando uso "gradlew".

icebunny08@D3CRYPT3D:~$ gradlew

Command 'gradlew' not found, did you mean:

  command 'gradle' from deb gradle

Try: sudo apt install <deb name>

Responder1

Os avisos que você recebe ao executar o comando gradle são devido a algum problema interessante com o JDK 9 ou posterior, conforme descritoaqui.

Se esses avisos forem um problema para você, você pode usar a solução alternativa descrita para fazê-los desaparecer:

Você pode adicionar os seguintes argumentos ao script de inicialização java ou JAVA_OPTS para suprimir esse aviso:

--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED


Agora sobre gradlew.

Gradlew é um invólucro em torno do gradle. Está vinculado a um projeto, não à sua estação de trabalho. Em outras palavras, cada projeto Gradle que você desenvolve pode ter um wrapper Graddle acompanhando. O objetivo do gradlew é tornar o projeto portátil (ou seja, os desenvolvedores não precisam instalar o gradle em suas estações de trabalho) e confiável (ou seja, a mesma versão do gradle para todos). O script wrapper fará o download da versão especificada do gradle para o seu projeto e, em seguida, executá-lo-á. Tudo isso está descrito emsua documentação.

O que você fez no seu caso foi instalar o Gradle na sua estação de trabalho, globalmente. a instalação do gradle não vem com o gradlew, pois o gradlew precisa ser adicionado a cada projeto gradle de sua escolha, conforme descritoaqui. Você simplesmente precisa executar o seguinte comando em seu projeto:

gradle wrapper

Isso criará o script wrapper para o seu projeto Gradle. Obviamente, você precisa que o gradle esteja instalado para executar este comando (você já o instalou), mas se você enviar o resultado e compartilhá-lo com outros desenvolvedores, eles poderão usar o script gradlew sem instalar o gradle.

No seu caso, você acaba com duas possibilidades:

  • execute comandos gradle em seu projeto, como gradle clean. Você pode fazer isso porque instalou manualmente o gradle globalmente
  • execute comandos gradlew em seu projeto, como gradlew clean. Você pode fazer isso porque criou o script wrapper gradle wrapperem primeiro lugar.

Ambos devem dar o mesmo resultado se a versão gradle for a mesma.

informação relacionada