标签: Gradle
目录
- 标签: Gradle
- 配置文件分类
- 配置项类举
- build.gradle
- 1、 buildscript
- 2、 plugins
- 3、apply
- 4、allprojects
- 5、repositories
- 6、dependencies
- 7、task配置
- 8、定制项目
- settings.gradle
- 1、pluginManagement(非必需)
- 2、settingsEvaluated(非必需)
- 3、projectsLoaded(非必需)
- 4、自定义初始化方法(非必需)
- 5、rootProject.name(必需)
- 6、include(重要)
Gradle功能很强大,也非常的灵活,但是我学习了很多资料之后发现,对于开发人员来说,很多内容并非我必须要了解的,虽然技多不压身,但是暂时用不到的知识遗忘速度也是飞快的,还是先解决最主要的问题,用Gradle来代替Maven管理自己的java项目。
使用Gradle管理项目的最主要的是学会Gradle的配置文件编写,接下来将自己对于Gradle配置文件的理解记录下来备查。
配置文件分类
配置文件分为三种
- build.gradle
主要配置文件,关于项目的依赖关系主要在该文件中配置 - settings.gradle
项目信息文件,项目的一些可在这里配置,比如项目名称、子项目信息 - xxxxx.gradle
模块配置文件,可将冗长的配置信息分块进行配置,比如依赖的版本统一管理等
配置项类举
build.gradle
1、 buildscript
作用:gradle的自身的资源配置,比如仓库信息、依赖信息、插件信息等
Tips:该配置项应放在配置文件的最开头位置
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
2、 plugins
作用:插件集合配置
Tip:该配置项位置应放在除buildscript配置之外的所有配置项的前面
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
}
3、apply
作用:包含配置插件、引用其他配置文件
Tips:该配置项位置应放在除buildscript、plugins配置之外的所有配置项的前面,没有plugins则保证在buildscript之后
//配置插件
apply plugin: 'io.spring.dependency-management'
//引用配置文件
apply from: 'config.gradle'
4、allprojects
作用:多模块项目结构中对子模块的相同配置集中配置,包括repositories、dependencies等
allprojects {
repositories {
maven { name "M2" ; url 'https://plugins.gradle.org/m2/'
}
dependencies {
compileClasspath 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
}
另外还有subprojects也是配置多模块项目的关键配置,两者的区别是allprojects是包括rootProject的subprojects是不包括rootProject的,task遍历顺序为allprojects > subprojects > Child Project
5、repositories
作用:配置依赖仓库信息,常用阿里云的仓库,直接复制示例代码即可
repositories {
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
}
6、dependencies
作用:依赖包的配置
依赖方式:在2.x版本和3.0以后的版本更换了关键字
| 2.x | 3.0 OR later | 描述 |
| -------- | ----- | :---- | |
| compile | implementation,api |编译以及运行时都需要|
| provided | compileOnly、[ compileClasspath ] |仅编译需要|
| apk | runtimeOnly |仅运行时需要|
| testCompile| testImplementation | 测试编译时使用 |
Tips:常用的就是implementation、testCompile 和 compileOnly.
网上很多说implemention是隐藏内部引用的作用,但是不必深究,用就可以了,出现问题再来解决,多数情况下是不会遇到问题的
冲突处理:
- exclude
作用:排除依赖
//单独排除某个模块中的依赖
compile('com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.11.0@aar') {
exclude group: 'com.android.support'
}
// 排除所有子依赖中的support依赖
configurations {
all*.exclude group: 'com.android.support'
}
- transitive
作用:配置依赖传递
//依赖同于没有使用 exclude 排除依赖 ,每个包的依赖项都会被递归分析并添加进来。
transitive = true
//则依赖关系同于用 exclude 排除依赖。
transitive = false
- force
作用:强制版本
// 强制使用 support-v4 26.1.0版本
compile('com.android.support:support-v4:26.1.0') {
force = true
}
7、task配置
作用:配置自定义任务,例如编译任务,将依赖、资源文件与项目分离
Tips:这块内容较为复杂,单独主题进行分析
8、定制项目
sourceCompatibility = 1.8
version = '1.0'
settings.gradle
1、pluginManagement(非必需)
作用:插件库管理
Tips:放在配置文件最前端
pluginManagement {
repositories {
//这个就是默认的插件库,一般可不配置,除非有更好更快的插件库
gradlePluginPortal()
}
}
2、settingsEvaluated(非必需)
作用:settings.gradle初始化完成的回调函数,用于做些初始化工作
gradle.settingsEvaluated {
println "settings初始化完成"
}
3、projectsLoaded(非必需)
作用:所有项目载入完成回调函数
gradle.projectsLoaded {
Gradle gradle ->
println "子项目初始化完成"+gradle
}
4、自定义初始化方法(非必需)
//创建自定义方法
def customInit(){
println"start init"
//做自己想要做的初始化
println"end init"
}
//settings.gradle加载的时候,会执行这个方法
customInit()
5、rootProject.name(必需)
作用配置项目名称
rootProject.name = 'test-core'
6、include(重要)
作用:配置多个项目
include ':app',':core'