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 wrappergradle wrapper
em primeiro lugar.
Ambos devem dar o mesmo resultado se a versão gradle for a mesma.