第2章 The Gradle Wrapper

来源:互联网 发布:ios项目源码下载 编辑:程序博客网 时间:2024/05/29 05:08

2.1. 工程中添加Wrapper

有时你可能需要将Wrapper提交至项目版本控制中。通过发布带有Wrapper的工程,其他人员不需要安装gradle也可以执行gradle命令。

使用Wrapper的另外一个好处是可以随时调整gradle的执行版本,这对于持续集成项目是有必要的。

可以执行wrapper任务将Wrapper安装到项目中。通过--gradle-verison参数指定需要集成的gradle版本。默认情况下Wrapper需要使用bin发行版,它是gradle最小的发行版本。可以使用--distribution-type指定使用的发行版本。同--gradle-distribution-url参数指定gradle的下载URL。如果为指定gradle版本或URL,Wrapper会安装wrapper任务运行环境的gradle的版本。例如如果wrapper运行在gradle2.4环境下,Wrapper会配置成2.4版本。

示例 2.1 运行wrapper任务

gradle wrapper --gradle-version 4.2.1运行结果:

>gradle wrapper --gradle-version 4.2.1BUILD SUCCESSFUL in 2s1 actionable task: 1 executed

Wrapper也可以在build文件中做进一步配置,以添加或修改某些属性,然后再执行wrapper任务。

示例 2.2 wrapper任务

build.gradle

task wrapper(type: Wrapper) {    gradleVersion = '4.2.1'}

通过执行wrapper任务,你的工程下会新增或修改某些文件。

示例 2.3 wrapper生成的文件

生成的结构树:

simple/  gradlew  gradlew.bat  gradle/wrapper/    gradle-wrapper.jar    gradle-wrapper.properties

所有这些内容需要提交到你的版本控制系统。一旦这些文件添加至你的工程下,工程的构建应该使用gradlew命令,使用方式与gradle相同。

如果需要修改gradle的版本,不需要重新执行wrapper任务,修改gradle-wrapper.properties文件即可。但是如果想使用gradle wrapper的新功能特性,需要重新生成wrapper相关文件。

2.2. 使用Wrapper执行build

如果Wrapper安装到了你的工程,可以使用下面的方式执行任务:

  • ./gradlew <task> (Linux 或 macOS 平台)

  • gradlew <task> (Windows 平台)

Wrapper会自动识别gradle版本、下载gradle,并执行任务。这样不仅意味着你不需要安装gradle就可执行gradle任务,而且会明确你的gradle使用版本。

使用默认的下载地址https://services.gradle.org/distributions/gradle-4.2.1-bin.zip可能无法正常下载,你需要在gradle-wrapper.properties中将想做路径修改成自己的下载地址。

Wrapper下载的gradle发行版会默认保存在你用户路径下:$USER_HOME/.gradle/wrapper/dists

示例 2.4 gradlew命令

Chapter2>gradlew tasks> Task :tasks------------------------------------------------------------All tasks runnable from root project------------------------------------------------------------Build Setup tasks-----------------init - Initializes a new Gradle build.wrapper - Generates Gradle wrapper files.Help tasks----------buildEnvironment - Displays all buildscript dependencies declared in root project 'Chapter2'.components - Displays the components produced by root project 'Chapter2'. [incubating]dependencies - Displays all dependencies declared in root project 'Chapter2'.dependencyInsight - Displays the insight into a specific dependency in root project 'Chapter2'.dependentComponents - Displays the dependent components of components in root project 'Chapter2'. [incubating]help - Displays a help message.model - Displays the configuration model of root project 'Chapter2'. [incubating]projects - Displays the sub-projects of root project 'Chapter2'.properties - Displays the properties of root project 'Chapter2'.tasks - Displays the tasks runnable from root project 'Chapter2'.To see all tasks and more detail, run gradlew tasks --allTo see more detail about a task, run gradlew help --task <task>BUILD SUCCESSFUL in 2s1 actionable task: 1 executed

2.3. 配置信息

Wrapper的配置信息在gradle-wrapper.properties中。在运行gradlew命令时,发现本地没有Wrapper,会先自动下载gradle的发行版。如果你不想从网上下在gradle,可以在gradle-wrapper.properties配置你本地文件路径。

distributionUrl=file:///D:/tools/gradle-4.2.1-bin.zip

示例 2.5 配置本地路径

gradlew test的运行结果:

Chapter2>gradlew tasksDownloading file:/D:/tools/gradle-4.2.1-bin.zip...........................................Unzipping C:\Users\lenovo\.gradle\wrapper\dists\gradle-4.2.1-bin\pgt46hlh8zt8yzdid3kx4zg3\gradle-4.2.1-bin.zip to C:\User> Task :tasks------------------------------------------------------------All tasks runnable from root project------------------------------------------------------------Build Setup tasks-----------------init - Initializes a new Gradle build.wrapper - Generates Gradle wrapper files.

如果你使用Wrapper构建工程,你本地配置的gradle将不再起作用。

原创粉丝点击