文档章节

Gradle Wrapper

拿客-三产
 拿客-三产
发布于 2017/03/14 16:07
字数 825
阅读 269
收藏 9

Why

试想一下,你做好了一个 Gradle 构建的 Web 应用,并且要分享给他人,让他人可以参与到开发中,但对方下载代码后安装了 Gradle 却发现应用未能正常使用。 经过多次长时候才发现原来是 Gradle 运行时版本不兼容。 怎样解决这个问题呢?

What

Gradle 包装器是 Gradle 的核心特性,能够让机器在没有安装 Gradle 运行时的情况下运行 Grade 构建。它也让构建脚本运行在一个指定的 Gradle 版本上。它是通过中心仓库下载对应版本的 Gradle 运行时来实现的。最终的目标是创造一个独立于系统、系统配置和 Gradle 版本的可靠的、可重复的构建。

How

####配置包装器 1、创建一个包装器任务【此步骤也可跳过,Gradle会提供一个默认的 wrapper 任务,gradleVersion为当前机器上的版本】 在 build.gradle 中添加以下代码:

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

2、执行任务生成包装器文件

www.cdoerknock.com$ gradle wrapper
Starting a Gradle Daemon (subsequent builds will be faster)
> Configuring > 0/1 projects > root project > Compiling D:\Windows\Desktop\LearnGradle\Gradle包装器\project\build.gradle:wrapper

BUILD SUCCESSFUL

Total time: 14.749 secs

此时会生成 gradle 文件夹以及 gradlew、gradlew.bat 文件

|  //下面是 windows 或者 linux 执行 Gradle 命令的包装器脚本
│  gradlew
│  gradlew.bat
└──gradle
   └─wrapper
           //Gradle 包装器微类库,包含下载和解包 Gradle 运行时的逻辑
           gradle-wrapper.jar
           //包装器元信息,包含已下载 Gradle 运行时的存储位置和原始 URL
           gradle-wrapper.properties

获取到改代码,但是自己本机没有 Gradle 运行时的同事就可以执行对应操作系统的命令来执行,例如 Windows 系统使用 powershell【cmd也可以】:

//Linux 应该使用 .\gradlew appRun
PS D:\Windows\Desktop\LearnGradle\Gradle包装器\project>    .\gradlew.bat appRun
//从远程库下载对应版本的 Gradle 
Downloading https://services.gradle.org/distributions/gradle-3.4-bin.zip
//解压到默认目录 Linux 还会赋权限 
Unzipping C:\Users\zylia\.gradle\wrapper\dists\gradle-3.4-bin\aeufj4znodijbvwfbsq3044r0\gradle-3.4-bin.zip to C:\Users\zylia\.gradle\wrapper\dists\gradle-3.4-bin\aeufj4znodijbvwfbsq3044r0
:prepareInplaceWebAppFolder
:createInplaceWebAppFolder
:compileJava
:processResources NO-SOURCE
:classes
:prepareInplaceWebAppClasses
:prepareInplaceWebApp
:appRun
14:50:22 INFO  Jetty 9.2.15.v20160210 started and listening on port 9090
14:50:22 INFO  ToDo Application runs at:
14:50:22 INFO    http://localhost:9090/coderknock
Press any key to stop the server.
> Building 87% > :appRun

运行时的 Gradle 是通过 Gradle 项目的中心服务器下载并解压(该下载解压过程只会进行一次,之后会重用)到 C:\Users\用户名.gradle\wrapper\dists (Linux是$HOME_DIR/.gradle/warpper/dists)目录下并且赋予相应权限后来进行构建的。这样就可以解决 Why 里提到的问题了。

Further

如果我们无法访问外网,或者不想解压到默认目录,我们可以通过在 build.gradle 脚本中添加一些自定义配置来修改这些内容【修改后需要重新执行gradle wrapper生成包装器】:

task wrapper(type:Wrapper){
    gradleVersion='3.4'
    //获取 Gradle 安装包的 URL 这里可以通过下面的方式使用本地文件(从中央库下载比较慢,我们可以使用迅雷等工具下载后用这种方式比较快捷)
    distributionUrl='file:///D:/Windows/Desktop/LearnGradle/Gradle包装器/project/gradle-3.4-bin.zip'
    //C:\Users\用户名\.gradle linux下是 $HOME_DIR/.gradle 的相对路径
    distributionPath='gradle-dists'
}

相关代码

© 著作权归作者所有

拿客-三产
粉丝 110
博文 76
码字总数 122526
作品 0
丰台
程序员
私信 提问
加载中

评论(2)

拿客-三产
拿客-三产 博主

引用来自“Feng_Yu”的评论

不用在build.gradle追加wrapper的闭包也可以执行gradle wrapper,这个是task是gradle默认包含的task。加上这个闭包是可以指定wrapper的一些属性,比如版本号,下载链接等等。

回复@Feng_Yu : 是的,谢谢补充
Feng_Yu
Feng_Yu
不用在build.gradle追加wrapper的闭包也可以执行gradle wrapper,这个是task是gradle默认包含的task。加上这个闭包是可以指定wrapper的一些属性,比如版本号,下载链接等等。
Gradle学习(三)——Gradle Wrapper

用Wrapper进行构建 如果你的Gradle项目设置了Wrapper,那么你就需要在root项目中运行以下命令中的一个去执行构建: (Linux或者macOS) (Windos) 每个Wrapper都绑定了一个版本的Gradle,当你执...

lastsweetop
2017/12/21
0
0
Gradle核心思想(四)看似无用,实则重要的Gradle Wrapper

本文首发于微信公众号「刘望舒」 原文链接:看似无用,实则重要的Gradle Wrapper 关联文章 Gradle核心思想(一)为什么现在要用Gradle? Gradle核心思想(二)Gradle入门前奏 Gradle核心思想...

刘望舒
03/21
0
0
Gradle Build Tool(三)Gradle Wrapper

在Gradle构建文件中,大部分都是与Gradle Wrapper(简称Wrapper)相关的文件。之前简单提到过,Wrapper是一个执行脚本,它的功能是帮助开发人员管理Gradle版本,必要时会事先下载需要的运行版...

吴七禁
2018/11/26
0
0
android studio在Refresh gradle project卡死,附解决办法

借鉴下面博文:http://www.bubuko.com/infodetail-1496229.html 首先打开android studio项目 找到项目目录gradlewrappergradle-wrapper.properties这个文件 你会看到 #Wed Apr 10 15:27:10 P......

ouloba
2016/07/26
3.1K
0
Android gradle和gradle wrapper

使用Android Studio开发Android时,默认使用gradle进行编译打包。 要使用gradle插件打包,需要导入classpath,此处,plugin的版本会对应一个gradle版本,版本对应不正确,会导致编译打包出错...

xingjm8511
2016/05/30
147
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
8分钟前
0
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
10分钟前
1
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部