sme*_*eeb 206 gradle gradlew build.gradle
我试图了解Gradle Wrapper的工作原理.在许多源代码库中,我看到以下结构:
projectRoot/
src/
build.gradle
gradle.properties
settings.gradle
gradlew
gradlew.bat
gradle/
wrapper/
gradle-wrapper.jar
gradle-wrapper.properties
Run Code Online (Sandbox Code Playgroud)
我的问题:
gradlew/ gradlew.bat?您是否应该在项目首次创建时仅生成一次,每次提交/推送更改时是否生成它们?它们是如何产生的?gradle/wrapper/*文件(gradle-wrapper.jar和gradle-wrapper.properties)?*.gradle在项目gradle目录中看到其他文件.这些额外的Gradle文件是什么?它们代表什么/做什么?自定义插件?settings.gradle与内部应该定义的属性有什么不同gradle.properties?Opa*_*pal 239
您生成它一次,当您想要更改您在项目中使用的Gradle版本时再次生成它.没有必要经常生成.这是文档.只需将wrapper任务添加到build.gradle文件并运行此任务即可获取包装器结构.
请注意,您需要安装Gradle才能生成包装器.管理g-ecosystem工件的好工具是SDKMAN!.要生成gradle包装器,请将以下代码添加到build.gradlefile:
task wrapper(type: Wrapper) {
gradleVersion = '2.0' //version required
}
Run Code Online (Sandbox Code Playgroud)
并运行:
gradle wrapper
Run Code Online (Sandbox Code Playgroud)
任务.将生成的文件添加到SCM(例如git),从现在开始,所有开发人员在使用Gradle Wrapper时都将拥有相同版本的Gradle.
使用Gradle 2.4(或更高版本),您可以设置包装器而无需添加专用任务:
gradle wrapper --gradle-version 2.3
Run Code Online (Sandbox Code Playgroud)
要么
gradle wrapper --gradle-distribution-url https://myEnterpriseRepository:7070/gradle/distributions/gradle-2.3-bin.zip
Run Code Online (Sandbox Code Playgroud)
所有细节都可以在这里找到
3.1 --distribution-type也可以使用Gradle 选项.选项是binary和all和bin.所有附加包含源代码和文档.使用IDE时,一切都更好,因此编辑器工作得更好.缺点是构建可能会持续更长时间(需要下载更多数据,在CI服务器上无意义)并且需要更多空间.
这些是Gradle Wrapper文件.您需要生成一次(对于特定版本)并添加到版本控制.如果需要更改Gradle Wrapper的版本,build.gradle请更改(1.)中的版本并重新生成文件.
举一个详细的例子.这样的文件可能有多种用途:多模块项目,责任分离,略微修改的脚本等.
settings.gradle负责项目的结构(模块,名称等),而gradle.properties用于项目和Gradle的外部细节(版本,命令行参数-XX,属性等).
Cam*_*mer 26
// 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()
}
}
Run Code Online (Sandbox Code Playgroud)
然后在命令行运行
gradle wrapper
Run Code Online (Sandbox Code Playgroud)
如果您在系统上缺少gradle安装它或上述将无法正常工作.在Mac上,最好通过Homebrew安装.
brew install gradle
Run Code Online (Sandbox Code Playgroud)
成功运行包装器任务并生成后gradlew,请不要使用系统gradle.它会为你节省很多麻烦.
./gradlew assemble
Run Code Online (Sandbox Code Playgroud)
com.android.tools.build:gradle:1.0.1
Run Code Online (Sandbox Code Playgroud)
您应该将版本设置为最新版本,然后您可以检查工具页面并相应地编辑版本.
添加gradle和最新的Android Studio大大改变了项目布局.如果您有一个较旧的项目,我强烈建议您使用最新的Android Studio创建一个干净的项目,并查看Google认为标准项目的内容.
Android Studio具有导入旧项目的功能,这些功能也可以提供帮助.
Cra*_*der 16
从Gradle 2.4开始,您可以使用gradle wrapper --gradle-version X.X配置特定版本的Gradle包装器,而无需向build.gradle文件中添加任何任务.下次使用包装器时,它将下载相应的Gradle分配.
如果要下载包含源和文档的gradle,则在gradle-wrapper.properites中配置的默认分发URL将无法满足您的需要.它是https://services.gradle.org/distributions/gradle-2.10-bin.zip,不是https://services.gradle.org/distributions/gradle-2.10-all.zip.这个完整的URL是IDE建议的,例如Android Studio.如果你想下载完整的gradle,你可以像这样配置包装器任务:
task wrapper(type: Wrapper) {
gradleVersion = '2.13'
distributionUrl = distributionUrl.replace("bin", "all")
}
Run Code Online (Sandbox Code Playgroud)
这是用于告诉 Gradle 升级包装器的命令,以便它获取包含源代码的库的分发版本:
./gradlew wrapper --gradle-version <version> --distribution-type all
Run Code Online (Sandbox Code Playgroud)
使用“all”指定分发类型将确保 Gradle 下载源文件以供您的开发环境使用。
优点:
缺点:
如果您知道任何告诉 Gradle 不要在构建服务器上下载源代码的命令行选项,请发表评论或提供另一个答案。
小智 5
由于 gradle 内置任务在 4.8 中已弃用,请尝试以下操作
wrapper {
gradleVersion = '2.0' //version required
}
Run Code Online (Sandbox Code Playgroud)
并运行
gradle wrapper
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
143393 次 |
| 最近记录: |