gradle配置详解

版权声明:本文为章鱼哥原创文章,若要转载,请注明出处 https://blog.csdn.net/qq_40388552/article/details/95939429

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仓库地址等
  2. allprojects
    allprojects块的repositories用于多项目构建,为所有项目提供共同所需依赖包。而子项目可以配置自己的repositories以获取自己独需的依赖包。
    buildscript和allprojects的作用和区别
    buildscript中的声明时gradle脚本自身需要使用的资源,就是说他是自己需要的资源,跟你这个大少爷其实并没有什么关系,而allprojects声明的却是你所有moudle所需使用的资源,就是说如果大少爷你的每个modle都需要用同一个第三方库的时候,你可以在allprojects里面声明。
  3. ext
    ext是自定义属性,现在很多人都喜欢把所有关于版本的信息都利用ext放在另一个自己新建的gradle文件中集中管理
  4. 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源代码文件。
  2. 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

你可能感兴趣的:(Java)