第6章、Gradle包装器
目录
6.1、用包装器(Wrapper)执行构建6.2、将包装器添加到项目中6.3、配置6.4、经过认证的Gradle发行版下载6.5、验证已下载的Gradle发行版本6.6、Unix文件权限
大多数工具需要在计算机上安装才能使用它们。如果安装很容易,你可能会认为没关系。但是,构建用户可能会造成不必要的负担。同样重要的是,用户是否会为该版本安装正确版本的工具?如果他们正在构建旧版本的软件怎么办?Gradle 包装器(以下称为“Wrapper”)解决了这两个问题,并且是开始Gradle构建的首选方式。
6.1、用Wrapper执行构建
如果Gradle项目已经设置了Wrapper(并且我们建议所有项目都这样做),那么可以使用项目根目录中的以下命令执行构建:./gradlew <task>
(在类Unix平台上,如Linux和Mac OS X)gradlew <task>
(在Windows上使用gradlew.bat批处理文件)
gradlew
(Unix Shell 脚本)gradlew.bat
(Windows 指处理文件)gradle/wrapper/gradle-wrapper.jar
(Wrapper JAR)gradle/wrapper/gradle-wrapper.properties
(Wrapper 属性)
集成开发环境通过其包装器导入Gradle项目时,您的IDE可能会要求使用Gradle'all'分发。这是非常好的,有助于IDE为构建文件提供代码完成。
6.2、将包装器添加到项目中
Wrapper是你应该检查版本控制的东西。通过将Wrapper与您的项目分发,任何人都可以使用它,而无需事先安装Gradle。更好的是,构建的用户可以保证使用该版本设计使用的Gradle版本。当然,这对于持续集成服务器(即定期构建项目的服务器)也是非常好的,因为它不需要服务器上的配置。您可以通过运行包装任务将Wrapper安装到项目中。 (此任务始终可用,即使您不将其添加到构建中)。要指定Gradle版本,请在命令行中使用--gradle-version。默认情况下,Wrapper将使用bin分配。这是最小的Gradle分布。一些工具,如Android Studio和Intellij IDEA,在与所有发行版一起使用时提供附加的上下文信息。您可以使用--distribution-type选择不同的Gradle分发类型。您还可以通过--gradle-distribution-url直接设置下载Gradle的URL。如果没有指定版本或分发URL,Wrapper将被配置为使用包装器任务执行的gradle版本。因此,如果您使用Gradle 2.4运行包装任务,则Wrapper配置将默认为2.4版。
例6.1。运行包装器任务
gradle wrapper --gradle-version 2.0
命令输出:> gradle wrapper --gradle-version 2.0 :wrapper BUILD SUCCESSFUL in 0s 1 actionable task: 1 executed通过在构建脚本中添加和配置Wrapper任务,然后执行Wrapper任务,可以进一步定制包装器。
例6.2。包装器任务build.gradle
task wrapper(type: Wrapper) { gradleVersion = '2.0' }执行此操作后,您可以在项目目录中找到以下新的或更新的文件(如果使用了Wrapper任务的默认配置)。
例6.3。包装器生成的文件构建布局
simple/ gradlew gradlew.bat gradle/wrapper/ gradle-wrapper.jar gradle-wrapper.properties所有这些文件都应该提交到版本控制系统。这只需要做一次。将这些文件添加到项目之后,然后使用添加的gradlew命令构建项目。 gradlew命令可以与gradle命令完全相同的方式使用。如果要切换到新版本的Gradle,则无需重新运行包装器任务。在gradlewrwrper.properties文件中更改相应条目是非常好的,但如果要在Gradle包装器中使用新功能,则需要重新生成包装器文件。
6.3、配置
如果您使用Gradle运行Gradle,Wrapper将检查Wrapper的Gradle分布是否可用。如果是这样,它将通过原来传递给gradlew命令的所有参数委派给该分发的gradle命令。如果没有找到Gradle发行版,它将首先下载。配置Wrapper任务时,可以指定要使用的Gradle版本。 gradlew命令将从Gradle存储库下载相应的分发。或者,您可以指定Gradle发行版的下载URL。 gradlew命令将使用此URL下载分发。如果您既没指定了Gradle版本也没有指定下载URL,则gradlew命令将下载用于生成Wrapper文件的Gradle版本。有关如何配置Wrapper的详细信息,请参阅API文档中的Wrapper类。如果您不想通过逐步构建项目进行任何下载,只需在您的Wrapper配置指定的位置将Gradle发行版zip添加到您的版本控制。支持相对URL - 您可以指定相对于gradle-wrapper.properties文件位置的分发文件。如果您通过Wrapper构建,则会忽略计算机上安装的任何现有的Gradle发行版。
6.4、经过认证的Gradle发行版下载
Gradle Wrapper可以使用HTTP基本身份验证从服务器下载Gradle发行版。这使您能够在私有受保护的服务器上托管Gradle分发。您可以根据用例以两种不同的方式指定用户名和密码:作为系统属性或直接嵌入在distributionUrl中。系统属性中的凭证优先于在distributionUrl中嵌入的凭据。使用系统属性可以在用户主目录中的.gradle / gradle.properties文件中完成,或者通过其他方法,请参见第12.1节“通过gradle.properties配置构建环境”。例6.4。使用系统属性指定HTTP基本身份验证凭据gradle.propertiessystemProp.gradle.wrapperUser=username systemProp.gradle.wrapperPassword=password在gradle / wrapper / gradle-wrapper.properties文件中的distributionUrl中嵌入凭据也可以。请注意,该文件将被提交到您的源代码管理系统。只有在受控环境中才能使用共享凭据嵌入在distributionUrl中。例6.5。在distributionUrl中指定HTTP基本身份验证凭据gradle-wrapper.properties
distributionUrl=https://username:password@somehost/path/to/gradle-distribution.zip这可以与代理结合使用,经过身份验证。有关如何将Wrapper配置为使用代理的详细信息,请参见第12.3节“通过代理访问Web”。
6.5、验证已下载的Gradle发行版本
Gradle Wrapper允许通过SHA-256散列和比较验证下载的Gradle分布。通过防止中间人攻击者篡改下载的Gradle发行版,从而增强了针对目标攻击的安全性。要启用此功能,您需要首先计算已知Gradle分布的SHA-256散列。您可以通过shasum命令从Linux和OSX或Windows(通过Cygwin)生成SHA-256散列。例6.6。生成SHA-256哈希> shasum -a 256 gradle-2.4-all.zip 371cb9fbebbe9880d147f59bab36d61eee122854ef8c9ee1ecf12b82368bcf10 gradle-2.4-all.zip使用distributionSha256Sum属性将返回的散列和添加到gradle-wrapper.properties。例6.7。配置SHA-256校验和验证
gradle-wrapper.properties
distributionSha256Sum=371cb9fbebbe9880d147f59bab36d61eee122854ef8c9ee1ecf12b82368bcf10
6.6、Unix文件权限
Wrapper任务添加适当的文件权限以允许执行gradlew * NIX命令。 Subversion保留此文件权限。我们不知道其他版本控制系统如何处理这个问题。应该总是奏效的是执行“sh gradlew”。原文:https://docs.gradle.org/current/userguide/gradle_wrapper.html