《gradle 用户指南》中文版 第6章、gradle包装器-尊龙官方平台

《gradle 用户指南》中文版 第6章、gradle包装器

el/2024/3/25 19:16:38

第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  (在类unix平台上,如linux和mac os x)

  • gradlew  (在windows上使用gradlew.bat批处理文件)

每个wrapper都绑定到一个特定版本的gradle,所以当你为一个给定的gradle版本首先运行上面的命令之一时,它会下载相应的gradle分布并使用它来执行构建。 集成开发环境 通过其包装器导入gradle项目时,您的ide可能会要求使用gradle'all'分发。 这是非常好的,有助于ide为构建文件提供代码完成。 这不仅意味着您不必自己手动安装gradle,而且您还可以使用该版本设计的gradle版本。 这使您的历史建设更可靠。 只要在用户指南,堆栈溢出,文章或任何地方看到从gradle ...开始的命令行,请使用上述适当的语法。 为了完整起见,为确保不删除任何重要的文件,这里是构成wrapper的gradle项目中的文件和目录:
  • gradlew (unix shell 脚本)

  • gradlew.bat (windows 指处理文件)

  • gradle/wrapper/gradle-wrapper.jar (wrapper jar)

  • gradle/wrapper/gradle-wrapper.properties (wrapper 属性)

如果您想知道gradle发行版的存储位置,您可以在$ user_home / .gradle / wrapper / dists的用户主目录中找到它们。
集成开发环境 通过其包装器导入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
:wrapperbuild 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/gradlewgradlew.batgradle/wrapper/gradle-wrapper.jargradle-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.properties
systemprop.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

上一页  |  目录  |  下一页


http://www.ngui.cc/el/5127714.html

相关文章

七夕 | 谁说程序猿不浪漫?

七夕,这个很古老的节日,最近几年才渐渐的火起来。为什么会火,你知道背后的原因吗?其实就和双十一,双十二差不多,都是商家的炒作,多了一个节日,就多了多少消费,商家就多赚…

spring mvc 基于阻塞队列 linkedblockingqueue 的同步长轮询功能实现

标题 spring mvc 基于阻塞队列 linkedblockingqueue 的同步长轮询功能实现,其实本文介绍的也是生产者消费者的一种实现。生产者不必是一个始终在执行的线程,它可以是一个接口,接受客户端的请求,向队列中插入消息;消费者也不必是一个始终在执行的线程,它同样也可以是一个接…

intellij idea ce maven 使用方法

我们在使用 intellij idea ce 版本时,明明创建的是一个 maven 项目,但是在项目上点击鼠标右键时会发现,run maven build 菜单是灰的,不能用! 如下图: 有的文章说是 idea 对 maven 支持的不好(真…

conflictingbeandefinitionexception: annotation-specified bean name 'errorpagefilter'

idea ce 下创建的基于 maven 的 spring boot 项目,在使用 命令启动时出现错误。 完整错误信息: [error] failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.4.3.release:run (default-cli) on project testboot: an exception occurred while ru…

macos 配置环境变量注意事项

macos 配置环境变量注意事项 1、配置方法 编辑用户个人的配置文件 vi ~/.bash_profile 使配置立即生效 source ~/.bash_profile 注意事项: 1、source 命令执行后只对打开的当前窗口生效,其它已经打开的窗口不生效; 2、如果配置了一个环境变…

caused by: java.lang.classnotfoundexception: cannot find class:

caused by: java.lang.classnotfoundexception: cannot find class: 严重: exception sending context initialized event to listener instance of class org.springframework.web.context.contextloaderlistener org.springframework.beans.factory.beancreationexception:…
网站地图