Depois de desenvolver por tanto tempo, qual é a diferença entre gradle e gradlew e como escolher?

Traduzido de "gradle-vs-gradlew-difference"

GradleUma das perguntas mais frequentes pelos desenvolvedores é: Qual é agradle diferença entre e ? gradlew.

Ambos são comandos Gradle que se aplicam a cenários específicos. Através deste artigo você aprenderá o que cada comando faz e como escolher entre os dois comandos.

resumo rápido

Se você está trabalhando em um projeto que já inclui um gradlewscript , tudo bem, você sempre pode usá-lo. Se não estiver incluído, use o gradlecomando para gerar esse script.

Quer saber o porquê, continue lendo.

comando gradle

Se você baixou e instalou o Gradle do site do Gradle ( gradle.org/releases ), você pode usar o comando gradle instalado no diretório bin. Claro que você se lembra de adicionar o caminho bin à variável de ambiente PATH do dispositivo.

Depois disso, se você executar gradleno , verá uma saída como esta:

Você notará que a versão do Gradle é impressa na saída, que corresponde à versão do pacote de instalação do Gradle no dispositivo para o comando gradle que você executou. Isso pode soar um pouco ruim, mas é importante ser claro ao falar sobre gradlew.

Com este Gradle instalado localmente, você pode fazer muitas coisas com o comando gradle, incluindo:

  • Use o gradle initcomando para criar um novo projeto Gradle ou use o gradle wrappercomando para criar o diretório e os arquivos do wrapper gradle
  • Use o gradle buildcomando
  • Use o gradle taskscomando para ver quais tarefas são suportadas no projeto Gradle atual

上述的命令均使用你本地安装的 Gradle 程序,无论你安装的是什么版本。

如果你使用的是 Windows 设备,那么 gradle 命令等同于 gradle.bat,gradlew 命令等同于 gradlew.bat,非常简单。

gradlew 命令

gradlew 命令,也被了解为 Gradle wrapper,与 gradle 命令相比它是略有不同的。它是一个打包在项目内的脚本,并且它参与版本控制,所以当年复制了某项目将自动获得这个 gradlew 脚本。

“可那又如何?”

好吧,如果你这么想。让我告诉你,它有很多重要的优势。

1. 无需本地安装 gradle

gradlew 脚本不依赖本地的 Gradle 安装。在设备上第一次运行的时候会从网络获取 Gradle 的安装包并缓存下来。这使得任何人、在任何设备上,只要拷贝了这个项目就可以非常简单地开始编译。

2. 配置固定的 gradle 版本

这个 gradlew 脚本和指定的 Gradle 版本进行绑定。这非常有用,因为这意味着项目的管理者可以强制要求该项目编译时应当使用的 Gradle 版本。

Gradle 特性并不总是互相兼容各版本的,所以使用 Gradle wrapper 可以确保项目每次编译都能获得一致性的结果。

当然这需要编译项目的人使用 gradlew 命令,如下是在项目内运行 ./gradlew 的示例:

输出和运行 gradle 命令的结果比较相似。但仔细查看你会发现版本不一样,不是上面的 6.8.2 而是 6.6.1

这个差异说重要也重要,说不重要也不重要。

Mas ao usar gradlew , você não precisa se preocupar com inconsistências devido às versões do Gradle, pois isso garante que todos os membros da equipe e o servidor CI usarão a mesma versão do Gradle para construir o projeto.

Além disso, quase tudo o que você pode fazer com gradlecomandos , também pode fazer com gradlew. Por exemplo, compilar um projeto é ./gradlew build.

Se desejar, você pode copiar o projeto de amostra e experimentá-lo gradlew.

comparação gradle e gradlew

Até agora você deve ver que usar dentro de um projeto gradlewgeralmente a melhor opção. Certifique- se de que seus scripts gradlew sejam controlados por versão para que você e outros desenvolvedores possam colher os benefícios mencionados na seção anterior.

Mas não há nenhuma situação em que eu precise usar o gradlecomando ? Claro que existe. Se você deseja construir um novo projeto Gradle em um diretório vazio, gradle initpode fazê-lo com . Este comando também irá gerar o script gradlew .

(A tabela abaixo lista brevemente como escolher entre os dois) Pode-se dizer que usar gradlew é de fato a melhor prática para projetos Gradle.

O que você quer fazer? gradle ou gradlew ?
Compilar o projeto gradlew
Itens de teste gradlew
Executar outras tarefas do Gradle dentro do projeto gradlew
Inicialize um projeto Gradle ou gere um wrapper Gradle gradar

original

tomgregory.com/gradle-vs-g…

おすすめ

転載: juejin.im/post/7144558236643885092