Gradle配置详解

gradle是一个基于jvm的富有突破性的构建工具,gradle正迅速成为许多开源项目和前沿企业构建系统的选择,同时也在挑战遗留的自动化构建项目,Java世界中主要有三大构建工具:Ant、Maven和Gradle。经过几年的发展,Ant几乎销声匿迹、Maven也日薄西山,而Gradle的发展则如日中天。
优点:
1、一个像 ant 一样,通用的灵活的构建工具
2、一种可切换的,像 maven 一样的基于约定约定优于配置的构建框架
3、强大的多工程构建支持
4、强大的依赖管理(基于 ApacheIvy)
5、对已有的 maven 和 ivy 仓库的全面支持
6、支持传递性依赖管理,而不需要远程仓库或者 pom.xml 或者 ivy 配置文件
7、ant 式的任务和构建是 gradle 的第一公民
8、基于 groovy,其 build 脚本使用 groovy dsl 编写
9、具有广泛的领域模型支持你的构建
类似于maven每个模块都有一个pom文件,gradle每个modle也有一个gradle配置文件

  • gradle-wrapper

wrapper是对gradle的一层封装,便于在团队开发过程中统一Gradle构建的版本号。
gradle-wrapper.properties配置文件解析,

  1. distributionBase=GRADLE_USER_HOME 下载的gradle压缩包解压后存储的主目录
  2. distributionPath=wrapper/dists 相对于distributionBase解压后的gradle压缩包的路径
  3. distributionUrl=https://services.gradle.org/distributions/gradle-5.4-bin.zip gradle发行版压缩包的下载地址
  4. zipStoreBase=GRADLE_USER_HOME 同distributionBase,只不过是存zip压缩包的。
  5. zipStorePath=wrapper/dists 同distributionPath,只不过是存zip压缩包的。
  • settings.gradle

用于初始化以及工程树配置的,放在根工程目录下。

  • build.gradle主配置文件
  1. buildscript

buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等

  1. allprojects

allprojects块的repositories用于多项目构建,为所有项目提供共同所需依赖包。而子项目可以配置自己的repositories以获取自己独需的依赖包。
buildscript和allprojects的作用和区别
buildscript中的声明时gradle脚本自身需要使用的资源,就是说他是自己需要的资源,跟你这个大少爷其实并没有什么关系,而allprojects声明的却是你所有moudle所需使用的资源,就是说如果大少爷你的每个modle都需要用同一个第三方库的时候,你可以在allprojects里面声明。

  1. ext

ext是自定义属性,现在很多人都喜欢把所有关于版本的信息都利用ext放在另一个自己新建的gradle文件中集中管理

  1. repositories

顾名思义就是仓库的意思啦,而jcenter()、maven()和google()就是托管第三方插件的平台
jcenter()和mavenCentral()是Android Studio中Gradle插件使用的仓库
Android Studio早期版本使用的是mavenCentral,从某个时候开始切换到jcenter了。
这是因为jcenter在性能和占存储大小方面比mavenCentral更优:
jcenter是世界上最大的Java仓库
jcenter通过CDN服务,使用的是https协议,安全性更高,而Android Studio 0.8版本mavenCentral使用的是http协议
jcenter是mavenCentral的超集,包括许多额外的仓库
jcenter性能方面比mavenCentral更优
mavenCentral会自动下载很多与IDE相关的index,而这些用到的少,且不是必需

repositories {
    //mavenLocal()
    //maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
    //jcenter()
  }

  1. apply

apply plugin: ‘xxx’ 应用二进制插件,jar包
apply from: ‘xxx’ 叫做应用脚本插件,可以是本地的,也可以是网络存在的,如果是网络上的话要使用HTTPURL
apply plugin: ‘java’
应用Java插 件之后,约定src/main/java目录下是我们的源代码存放位置,在编译的时候也是编译这个目录下的Java源代码文件。

  1. dependencies{}

首先第一句compile fileTree(include: [‘.jar’], dir: ‘libs’)*,这样配置之后本地libs文件夹下的扩展名为jar的都会被依赖,非常方便。
如果你要引入某个本地module的话,那么需要用compile project(‘×××’)。
如果要引入网上仓库里面的依赖,我们需要这样写compile group:’com.squareup.okhttp3’,name:’okhttp’,version:’3.0.1’,当然这样是最完整的版本,缩写就把group、name、version去掉,然后以”:”分割即可。
compile ‘com.squareup.okhttp3:okhttp:3.0.1’

dependencies{

}
gradle 提供的依赖配置

名称    继承自    被哪个任务使用    意义
compile    -    compileJava    编译时依赖
runtime    compile    -    运行时依赖
testCompile    compile    compileTestJava    编译测试用例时依赖
testRuntime    runtime,testCompile    test    仅仅在测试用例运行时依赖
archives    -    uploadArchives    该项目发布构件(JAR包等)依赖
default    runtime    -    默认依赖配置
但是到了gradle3.0以后build.gradle中的依赖默认为implementation,而不是
之前的compile。另外,还有依赖指令api。
gradle 3.0中依赖implementation、api的区别:
其实api跟以前的compile没什么区别,将compile全部改成api是不会错的;
而implementation指令依赖是不会传递的,也就是说当前引用的第三方库仅限于本module内使用,其他module需要重新添加依赖才能用。
//指定预编译.java文件的JDK版本,根据实际情况填写
sourceCompatibility = 1.8
————————————————
原文链接:https://blog.csdn.net/qq_40388552/article/details/95939429

你可能感兴趣的:(Gradle)