1.概述
开发人员通常使用Gradle来管理项目的构建生命周期。对于所有新的Android项目,它都是构建工具的默认选择。
在本教程中,我们将学习Gradle Wrapper,这是一个附带的实用程序,可让您更轻松地分发项目。
2.Gradle Wrapper
要构建基于Gradle的项目,我们需要在计算机中安装Gradle。但是,如果我们安装的版本与项目版本不匹配,我们可能会面临许多不兼容的问题。
Gradle Wrapper(也简称为Wrapper
解决了此问题。这是一个运行带有声明版本的Gradle任务的脚本。如果未安装声明的版本,则包装程序将安装所需的版本。
包装器的主要优点是我们可以:
- 无需先安装Gradle,即可在任何计算机上使用Wrapper构建项目
- 有一个固定的Gradle版本。这将在CI管道上产生可重用和更强大的构建
- 更改包装器定义即可轻松升级到新的Gradle版本
在接下来的部分中,我们将运行需要在本地安装Gradle的Gradle任务。
2.1 生成包装器文件
要使用包装器,我们需要生成一些特定的文件。**我们将使用内置的Gradle任务(称为wrapper.
**请注意,我们只需要生成一次这些文件。
现在,让我们在项目目录中wrapper
$ gradle wrapper
让我们看一下该命令的输出:
让我们看一下这些文件是什么:
-
gradle-wrapper.jar
包含用于下载gradle-wrapper.properties文件中指定的Gradle发行gradle-wrapper.properties
-
gradle-wrapper.properties
包含Wrapper运行时属性-最重要的是,与当前项目兼容的Gradle发行版 -
gradlew
是使用包装器执行Gradle任务的脚本 -
gradlew.bat
是gradlew
等效批处理脚本
默认情况下, wrapper
任务会生成包装器文件,该包装器文件具有计算机上当前安装的Gradle版本。如果需要,我们可以指定其他版本:
$ gradle wrapper --gradle-version 6.3
我们建议将Wrapper文件检入到GitHub之类的源代码控制系统中。这样,我们确保其他开发人员无需安装Gradle即可运行项目。
2.2 使用包装器运行Gradle命令
我们可以通过更换运行与包装物的任何任务摇篮gradle
与**gradlew .**
要列出可用任务,我们可以使用gradlew tasks
命令:
$ gradlew tasks
让我们看一下输出:
Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle-wrapper'.
components - Displays the components produced by root project 'gradle-wrapper'. [incubating]
dependencies - Displays all dependencies declared in root project 'gradle-wrapper'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-wrapper'.
dependentComponents - Displays the dependent components of components in root project 'gradle-wrapper'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'gradle-wrapper'. [incubating]
outgoingVariants - Displays the outgoing variants of root project 'gradle-wrapper'.
projects - Displays the sub-projects of root project 'gradle-wrapper'.
properties - Displays the properties of root project 'gradle-wrapper'.
tasks - Displays the tasks runnable from root project 'gradle-wrapper'.
gradle
命令运行此任务时获得的输出相同。
3.常见问题
现在,让我们看看在使用Wrapper时可能会遇到的一些常见问题。
3.1忽略所有jar文件的全局.gitignore
一些组织不允许开发人员将jar文件检入其源代码管理系统。通常,此类项目在全局.gitignore
文件中具有一条规则,以忽略所有jar文件。因此, gradle-wrapper.jar
文件未检入git存储库。因此,包装器任务无法在其他计算机上运行。在这种情况下,我们需要将gradle-wrapper.jar
文件强制添加到git中:
git add -f gradle/wrapper/gradle-wrapper.jar
同样,我们可能有一个特定于项目的.gitignore
文件,它忽略了jar文件。我们可以通过放宽.gitignore
规则或通过强行添加包装jar文件来修复它,如上所示。
3.2 缺少包装器文件夹
检入基于Wrapper的项目时,我们可能会忘记包括存在于gradle
文件夹中wrapper
但是正如我们在上面看到的, wrapper
文件夹包含两个关键文件: gradle-wrapper.jar
和gradle-wrapper.properties.
如果没有这些文件,则在使用包装程序运行Gradle任务时会出现错误。因此,我们必须将wrapper
文件夹检入到源代码管理系统中。
3.3 删除包装文件
基于Gradle的项目包含一个.gradle
文件夹,用于存储缓存以加快Gradle任务的速度。有时,我们需要清除缓存以对Gradle构建问题进行故障排除。通常,我们删除整个.gradle
文件夹。但是,我们可能会将Wrapper gradle文件夹与*.gradle文件夹搞混,*然后将其删除。之后,在尝试使用包装程序运行Gradle任务时,我们肯定会遇到问题。
我们可以通过从源头获取最新更改来解决此问题。或者,我们可以重新生成包装器文件。
4.结论
在本教程中,我们了解了Gradle Wrapper及其基本用法。我们还了解了在使用Gradle Wrapper时可能会遇到的一些常见问题。
0 评论