如何/何时生成Gradle包装文件?
我正试图了解Gradle包装器是如何工作的。 在许多来源回购中,我看到以下结构:
projectRoot/ src/ build.gradle gradle.properties settings.gradle gradlew gradlew.bat gradle/ wrapper/ gradle-wrapper.jar gradle-wrapper.properties 我的问题:
-  如何/何时生成gradlew/gradlew.bat? 你是否应该在项目第一次创build时只生成一次,每次提交/推送更改时是否生成它们? 他们是如何产生的?
-  上面同样的问题,但是对于gradle/wrapper/*文件(gradle-wrapper.jar和gradle-wrapper.properties)?
-  有时我会在项目的gradle目录中看到其他*.gradle文件。 什么是这些额外的Gradle文件,他们代表/做什么? 自定义插件?
-  进入settings.gradle属性与在gradle.properties应该定义的内容有什么gradle.properties?
- 
你生成一次,再次当你想改变你在项目中使用的Gradle的版本。 没有必要经常产生。 这里是文档。 只需将 wrapper任务添加到build.gradle文件并运行此任务以获取包装结构。请注意,您需要安装Gradle来生成一个包装器。 用于pipe理g生态系统工件的好工具是SDKMAN! 。 要生成一个gradle包装,添加下面的一段代码 build.gradle文件:task wrapper(type: Wrapper) { gradleVersion = '2.0' //version required }并运行: gradle wrapper任务。 将结果文件添加到SCM(例如git),从现在开始,所有的开发者在使用Gradle Wrapper时都会有相同版本的Gradle。 使用Gradle 2.4 (或更高版本),您可以在不添加专门任务的情况下设置包装器: gradle wrapper --gradle-version 2.3要么 gradle wrapper --gradle-distribution-url https://myEnterpriseRepository:7070/gradle/distributions/gradle-2.3-bin.zip所有的细节可以在这里find 
 从Gradle 3.1 --distribution-type选项也可以使用。 选项是二进制和全部和bin 。  所有额外包含源代码和文档。 当使用IDE时, 所有这一切都更好,所以编辑器效果更好。 缺点是构build可能会持续更长的时间(需要下载更多的数据,在CI服务器上毫无意义),这将需要更多的空间。 
- 
这些是Gradle Wrapper文件。 您需要生成一次(针对特定版本)并添加到版本控制中。 如果您需要更改Gradle Wrapper的版本,请在 build.gradle更改版本,请参阅(1.)并重新生成文件。
- 
举一个详细的例子。 这样的文件可能有多种用途:多模块项目,责任分离,略微修改的脚本等。 
- 
settings.gradle负责项目的结构(模块,名称等),而gradle.properties用于项目和Gradle的外部细节(版本,命令行参数-XX,属性等)
生成Gradle包装器
项目build立gradle
 // Top-level build file where you can add configuration options common to all sub-projects/modules. // Running 'gradle wrapper' will generate gradlew - Getting gradle wrapper working and using it will save you a lot of pain. task wrapper(type: Wrapper) { gradleVersion = '2.2' } // Look Google doesn't use Maven Central, they use jcenter now. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } 
然后在命令行运行
 gradle wrapper 
如果您在系统上丢失了gradle,请安装它,否则上述操作将不起作用。 在Mac上,最好通过自制软件安装。
 brew install gradle 
 成功运行包装任务并生成gradlew ,请勿使用您的系统gradle。 它会为你节省很多头痛。 
 ./gradlew assemble 
那么上面看到的gradle插件呢?
 com.android.tools.build:gradle:1.0.1 
您应该将版本设置为最新版本,您可以检查工具页面并相应地编辑版本。
查看Android Studio生成的内容
gradle和最新的Android Studio的添加极大地改变了项目布局。 如果您有一个较旧的项目,我强烈build议使用最新的Android Studio创build一个干净的项目,并查看Google认为标准项目的内容。
Android Studio可以导入旧的项目,也可以提供帮助。
 从Gradle 2.4开始,您可以使用gradle wrapper --gradle-version XX来configuration特定版本的Gradle包装,而不需要将任何任务添加到您的build.gradle文件中。 下一次使用包装器时,它将下载适当的Gradle分配以匹配。 
如果你想用源码和文档下载gradle,在gradle-wrapper.properites中configuration的默认分发URL将不能满足你的需求。它是distributions/gradle-2.10-bin.zip ,而不是distributions/gradle-2.10-all.zip 。这个完整的url是由IDE提出的,比如Android Studio。如果你想下载完整的Gradle,你可以像这样configuration包装任务:
 task wrapper(type: Wrapper) { gradleVersion = '2.13' distributionUrl = distributionUrl.replace("bin", "all") } 
- 
你将会生成一次,但是如果你需要一个新的特性或者一个插件需要更新的gradle版本,就更新它们。 最简单的方法来更新:从Gradle 2.2开始,您可以下载并提取完整或二进制Gradle发行版 ,然后运行: $ <pathToExpandedZip>/bin/gradle wrapper不需要定义一个任务,虽然你可能需要某种 build.gradle文件。这将更新或创build gradlew和gradlew.bat包装以及gradle/wrapper/gradle-wrapper.properties和gradle-wrapper.jar来提供当前版本的gradle,wrap。
- 
这些都是包装的一部分。 
- 
一些 build.gradle文件引用子目录中的其他文件或文件,这些子目录是子项目或模块。 它有点复杂,但如果你有一个项目,你基本上需要一个文件。
- 
settings.gradle处理项目,模块和其他types的名称和设置,gradle.propertiesconfigurationgradle文件的可重用variables,如果你喜欢,你觉得他们会更清楚的方式。
这是用来告诉Gradle升级包装的命令,这样它将获取包含源代码的库的分发版本:
 ./gradlew wrapper --gradle-version <version> --distribution-type all 
使用“all”指定分发types将确保Gradle下载源文件以供您的开发环境使用。
优点 :
- IDE将立即访问源代码。 例如,Intellij IDEA不会提示您更新构build脚本以包含源代码发行版(因为此命令已经这样做)
缺点 :
- 更长/更大的构build过程,因为它正在下载源代码。 这是对源代码不必要的构build或CI服务器上的时间/空间的浪费。
如果您知道任何命令行选项以告诉Gradle不要在构build服务器上下载源,请评论或提供另一个答案。
- “minifyEnabled”vs“shrinkResources” – 有什么区别? 以及如何获得节省的空间?
- 如何将Apache HTTP API(legacy)作为编译时间依赖项添加到Android M的build.grade中?
- Gradle构buildnull控制台对象
- Gradle错误:任务执行失败':app:processDebugGoogleServices'
- android studio 0.4.2:Gradle项目同步失败的错误
- Android Studio:找不到com.android.tools.build:gradle:2.0.0-alpha2
- 添加资源,configuration文件到您的jar使用gradle
- 错误:执行任务':app:packageRelease'失败。 >无法计算/../AndroidStudioProjects/../classes.jar的散列
- 在intellij IDEA中使用gradle构build获取gradle依赖关系