目录(?)[+]
gradle-wrapper.properties中各属性的含义
1. gradle-wrapper.properties
gradle\wrapper
目录。该目录下有2个文件:gradle-wrapper.jar
和gradle-wrapper.properties
。
其中gradle-wrapper.properties的内容如下:
注:目前最新的是3.3版。
1.1 distributionUrl
distributionUrl
是要下载的gradle的地址,使用哪个版本的gradle,就在这里修改。
gradle的3种版本:
- gradle-xx-all.zip是完整版,包含了各种二进制文件,源代码文件,和离线的文档。例如,https://services.gradle.org/distributions/gradle-3.1-all.zip
- gradle-xx-bin.zip是二进制版,只包含了二进制文件(可执行文件),没有文档和源代码。例如,https://services.gradle.org/distributions/gradle-3.1-bin.zip
- gradle-xx-src.zip是源码版,只包含了Gradle源代码,不能用来编译你的工程。例如,https://services.gradle.org/distributions/gradle-3.1-src.zip
如果只是为了编译,可以不用完整版,只需要二进制版即可,例如,gradle-3.1-bin.zip。
1.2 其他4个属性
zipStoreBase
和zipStorePath
组合在一起,是下载的gradle-3.1-bin.zip所存放的位置。
zipStorePath
是zipStoreBase
指定的目录下的子目录。distributionBase
和distributionPath
组合在一起,是解压gradle-3.1-bin.zip之后的文件的存放位置。
distributionPath
是distributionBase
指定的目录下的子目录。
下载位置可以和解压位置不一样。
zipStoreBase
和distributionBase
有两种取值:GRADLE_USER_HOME
和PROJECT
。GRADLE_USER_HOME
表示用户目录。
在windows下是%USERPROFILE%/.gradle
,例如C:\Users\<user_name>\.gradle\
。
在linux下是$HOME/.gradle
,例如~/.gradle
。PROJECT
表示工程的当前目录,即gradlew所在的目录。
1.3 例1:各项属性的整体含义
例1,gradle-wrapper.properties的内容如下:
各项属性的整体含义,如下:
- (1) 去 https://services.gradle.org/distributions/gradle-3.1-bin.zip 下载gradle的3.1版本,只包含binary的版本。
C:\Users\<user_name>\.gradle\wrapper\dists
- 目录中。
(注:具体还有2级目录,即全路径为
C:\Users\<user_name>\.gradle\wrapper\dists\gradle-3.1-bin\<url-hash>\
- ,gradle-3.1-bin目录是根据下载的gradle的文件名来定的,
<url-hash>
- 目录名是根据distribution url路径字符串计算md5值得来的,具体参考
PathAssembler.java
- 中的
rootDirName()
- 和
getHash()
- ,PathAssembler.java的位置见本文最后的参考路径)
C:\Users\<user_name>\.gradle\wrapper\dists
- 中。(注:具体还有2级目录,同上)
1.4 搭建gradle测试环境
从任意一个gradle编译的工程中拷贝出gradle相关的文件,如下图:
注:.gradle
目录是后生成的。
./gradlew
即可。
1.5 例2:zipStoreBase=PROJECT,distributionBase=GRADLE_USER_HOME
例2,gradle-wrapper.properties的内容如下:
./gradlew
,log如下:
含义:
D:\gradle_env\wrapper\dists\gradle-3.3-bin\37bujujhbsnkqrb1fi6n3qirfu\gradle-3.3-bin.zip
- 。
注意:这里的
gradle-3.3-bin\37bujujhbsnkqrb1fi6n3qirfu
- 就是上面提到的2级目录。
C:\Users\galian\.gradle \wrapper\dists\gradle-3.3-bin\37bujujhbsnkqrb1fi6n3qirfu
-
注意:这里的
gradle-3.3-bin\37bujujhbsnkqrb1fi6n3qirfu
- 就是上面提到的2级目录。
1.6 例3:zipStoreBase=PROJECT,distributionBase=PROJECT
把gradle-wrapper.properties中的distributionBase改为PROJECT:
./gradlew
,log如下:
含义:
- (1) 先将下载到zipStoreBase和zipStorePath指定的位置,即gradlew所在目录的wrapper/dists目录下。
- (2) 解压的位置也是gradlew所在目录中的wrapper/dists目录下。下载位置和解压位置是同一个位置。
注意:执行./gradlew
前,需要将gradle-3.3-bin.zip.lck文件删除,否则会报如下错误:
2. 相关代码
gradle-3.3-src\gradle-3.3\subprojects\wrapper\src\main\java\org\gradle\wrapper\PathAssembler.java
3. gradle各版本文件对比
以gradle3.3版本为例。
3.1 gradle-3.3-all.zip 和 gradle-3.3-bin.zip
src
、docs
和samples
。
3.2 gradle-3.3-all.zip 和 gradle-3.3-src.zip
subprojects
目录与完整版的src
目录基本是一致的。
src版是编译环境,所以源码目录结构都是gradle工程的结构。
完整版的src
目录,只是源文件,不能直接拿来编译。
4. 参考
- (1) https://docs.gradle.org/current/dsl/org.gradle.api.tasks.wrapper.Wrapper.html
- (2) https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/wrapper/Wrapper.PathBase.html
- (3) http://services.gradle.org/distributions/gradle-3.3-src.zip
- (4) http://services.gradle.org/distributions
- (5) gradle-3.3-src\gradle-3.3\subprojects\wrapper\src\main\java\org\gradle\wrapper\PathAssembler.java
gradle-wrapper.properties中各属性的含义
1. gradle-wrapper.properties
gradle\wrapper
目录。该目录下有2个文件:gradle-wrapper.jar
和gradle-wrapper.properties
。
其中gradle-wrapper.properties的内容如下:
注:目前最新的是3.3版。
1.1 distributionUrl
distributionUrl
是要下载的gradle的地址,使用哪个版本的gradle,就在这里修改。
gradle的3种版本:
- gradle-xx-all.zip是完整版,包含了各种二进制文件,源代码文件,和离线的文档。例如,https://services.gradle.org/distributions/gradle-3.1-all.zip
- gradle-xx-bin.zip是二进制版,只包含了二进制文件(可执行文件),没有文档和源代码。例如,https://services.gradle.org/distributions/gradle-3.1-bin.zip
- gradle-xx-src.zip是源码版,只包含了Gradle源代码,不能用来编译你的工程。例如,https://services.gradle.org/distributions/gradle-3.1-src.zip
如果只是为了编译,可以不用完整版,只需要二进制版即可,例如,gradle-3.1-bin.zip。
1.2 其他4个属性
zipStoreBase
和zipStorePath
组合在一起,是下载的gradle-3.1-bin.zip所存放的位置。
zipStorePath
是zipStoreBase
指定的目录下的子目录。distributionBase
和distributionPath
组合在一起,是解压gradle-3.1-bin.zip之后的文件的存放位置。
distributionPath
是distributionBase
指定的目录下的子目录。
下载位置可以和解压位置不一样。
zipStoreBase
和distributionBase
有两种取值:GRADLE_USER_HOME
和PROJECT
。GRADLE_USER_HOME
表示用户目录。
在windows下是%USERPROFILE%/.gradle
,例如C:\Users\<user_name>\.gradle\
。
在linux下是$HOME/.gradle
,例如~/.gradle
。PROJECT
表示工程的当前目录,即gradlew所在的目录。
1.3 例1:各项属性的整体含义
例1,gradle-wrapper.properties的内容如下:
各项属性的整体含义,如下:
- (1) 去 https://services.gradle.org/distributions/gradle-3.1-bin.zip 下载gradle的3.1版本,只包含binary的版本。
C:\Users\<user_name>\.gradle\wrapper\dists
- 目录中。
(注:具体还有2级目录,即全路径为
C:\Users\<user_name>\.gradle\wrapper\dists\gradle-3.1-bin\<url-hash>\
- ,gradle-3.1-bin目录是根据下载的gradle的文件名来定的,
<url-hash>
- 目录名是根据distribution url路径字符串计算md5值得来的,具体参考
PathAssembler.java
- 中的
rootDirName()
- 和
getHash()
- ,PathAssembler.java的位置见本文最后的参考路径)
C:\Users\<user_name>\.gradle\wrapper\dists
- 中。(注:具体还有2级目录,同上)
1.4 搭建gradle测试环境
从任意一个gradle编译的工程中拷贝出gradle相关的文件,如下图:
注:.gradle
目录是后生成的。
./gradlew
即可。
1.5 例2:zipStoreBase=PROJECT,distributionBase=GRADLE_USER_HOME
例2,gradle-wrapper.properties的内容如下:
./gradlew
,log如下:
含义:
D:\gradle_env\wrapper\dists\gradle-3.3-bin\37bujujhbsnkqrb1fi6n3qirfu\gradle-3.3-bin.zip
- 。
注意:这里的
gradle-3.3-bin\37bujujhbsnkqrb1fi6n3qirfu
- 就是上面提到的2级目录。
C:\Users\galian\.gradle \wrapper\dists\gradle-3.3-bin\37bujujhbsnkqrb1fi6n3qirfu
-
注意:这里的
gradle-3.3-bin\37bujujhbsnkqrb1fi6n3qirfu
- 就是上面提到的2级目录。
1.6 例3:zipStoreBase=PROJECT,distributionBase=PROJECT
把gradle-wrapper.properties中的distributionBase改为PROJECT:
./gradlew
,log如下:
含义:
- (1) 先将下载到zipStoreBase和zipStorePath指定的位置,即gradlew所在目录的wrapper/dists目录下。
- (2) 解压的位置也是gradlew所在目录中的wrapper/dists目录下。下载位置和解压位置是同一个位置。
注意:执行./gradlew
前,需要将gradle-3.3-bin.zip.lck文件删除,否则会报如下错误:
2. 相关代码
gradle-3.3-src\gradle-3.3\subprojects\wrapper\src\main\java\org\gradle\wrapper\PathAssembler.java
3. gradle各版本文件对比
以gradle3.3版本为例。
3.1 gradle-3.3-all.zip 和 gradle-3.3-bin.zip
src
、docs
和samples
。
3.2 gradle-3.3-all.zip 和 gradle-3.3-src.zip
subprojects
目录与完整版的src
目录基本是一致的。
src版是编译环境,所以源码目录结构都是gradle工程的结构。
完整版的src
目录,只是源文件,不能直接拿来编译。
4. 参考
- (1) https://docs.gradle.org/current/dsl/org.gradle.api.tasks.wrapper.Wrapper.html
- (2) https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/wrapper/Wrapper.PathBase.html
- (3) http://services.gradle.org/distributions/gradle-3.3-src.zip
- (4) http://services.gradle.org/distributions
- (5) gradle-3.3-src\gradle-3.3\subprojects\wrapper\src\main\java\org\gradle\wrapper\PathAssembler.java