gradle配置gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=file:///G:/Software/gradle-4.8-all.zip (使用本地下载的zip包,避免重复下载)
(distributionUrl=https://services.gradle.org/distributions/gradle-3.1-bin.zip.默认配置,启动时下载)
zipStoreBase和zipStorePath组合在一起,是下载的gradle的zip所存放的位置。
zipStorePath是zipStoreBase指定的目录下的子目录。
distributionBase和distributionPath组合在一起,是解压gradle的zip之后的文件的存放位置。
distributionPath是distributionBase指定的目录下的子目录。
下载位置可以和解压位置不一样。
zipStoreBase和distributionBase有两种取值:GRADLE_USER_HOME和PROJECT。
其中,GRADLE_USER_HOME表示用户目录。
在windows下是%USERPROFILE%/.gradle,例如C:\Users<user_name>.gradle\。
在linux下是$HOME/.gradle,例如~/.gradle。
PROJECT表示工程的当前目录,即gradlew所在的目录
•project和task 是Gradle本身领域主要的两个对象
•Project为task提供了执行的容器和上下文
project
gradle构建的时候,会根据build.gradle构建脚本文件生成project对象.
所有的构建都是执行project里面的方法进行构建
project对象可以隐式调用
脚本里面写的代码就是插入到project对象里面
task
task任务:编译,打包.定义的任务最终也会打包到project里面执行
task生命周期
扫描,执行
默认为扫描式
task任务依赖dependsOn("任务名").依赖关系成立后,执行打开任务也将执行全部代码
task("打开"){
println("opendoor")
}
task("put"){
println("放东西")
}.dependsOn("打开")
task("close"){
println("关闭")
}.dependsOn("put")
task任务下用doFirst修饰(可以实现按依赖顺序执行).doLast
task("打开"){
doFirst{
println("opendoor")
}
}
task("put"){
doFirst {
println("放东西")
}
}.dependsOn("打开")
task("close"){
doFirst{
println("关闭")
}
}.dependsOn("put")
任务集tasks
可以将多个任务task放入tasks
idea配置文件
build.gradle文件
1. 1plugins:插件,插件已经定义了很多任务集
java //无需打包时使用
application //需要打包时使用,可以打包为tar/zip包
war //javaEE使用,可以打包为war包
kotlin("jvm") //支持开发kotlin
1.2三方插件/插件仓库使用
Gradle-->Explore-->Gradle Plugins
2.依赖管理
在什么地方以什么形式引入外部代码(导包)
所有软件在最开始时都不会很大,随着时间的推移,软件平台不断膨胀,各个组件或模块之间的依赖变的越来越复杂.如果管理不当就会陷入泥潭
三方框架(插件集)http://mvnrepository.com
gradle自动依赖管理
依赖库的坐标
Group(组):用包名来命名,表示由哪一个组织开发
Name(名):项目名
Version(版本号):定义jar包的版本
依赖配置阶段
TDD(test driven development) 测试驱动开发
编译时依赖 compile
测试时依赖 testcompile
3.代码仓库repositories
存放代码的地方
mavenCentral
Jcenter 安卓谷歌应用
Local本地仓库(mavenCentral, Jcenter) 首次使用会从默认中央仓库下载,再次使用就缓存到电脑了
文件仓库(不建议使用) //协作阻碍
自定义maven仓库(最常用 maven私服)
Gradle增量更新
效率提升的要点所在.任务没有变化的时候,重新执行瞬间完成.
输入
inputs.dir() 文件夹
inputs.file() 文件
输出
outputs.dir()
outputs.file()
下面代码实现统计工作量
task("统计工作量") {
inputs.dir("G:\\javaExc") //输入源
outputs.file("info.txt") //输出源
doFirst {
val dir = fileTree("G:\\javaExc")
val file = file("info.txt") //存放源代码文件名
// file.writeText("")//每次执行覆盖
dir.forEach {
if (it.isFile) {
file.appendText(it.absolutePath)
file.appendText("\r\n")
}
}
}
}
网友评论