作用 | |
---|---|
src | 源码打包,不能运行 |
bin | 可执行binary脚本(linux/windows) |
all | 除了源码,还有demo |
- 一般通过wrapper
Wrapper
gradle wrapper
时,会启动一个小的jvm加载生成的指令生成的jar包,从gradle官网下载项目对应的gradle版本,gradle+版本号 wrapper
gradle wrapper + 项目
指令执行后,会查看本地是否有项目对应的gradle版本,没有则会先去下载到GradleUserHome中去,通过启动的Jvm去访问对应版本的daemon.Jvm进程GradleUserHome
~/.gradle/
,不建议使用本地maven的m2替代,因为原本的.gradle目录下的模块分的很清晰,功能明确GradleUserHome
,后果是每次构建需要重新下载插件与依赖到新的目录目录 | desc |
---|---|
init.d | 项目运行前,仓库替换 |
wrapper | gradle wrapper 指令运行后,下载的安装包会放在此处 |
caches | 类似于maven的.m2 ,但是除了本地仓库的包以外,还有其他东西,它会进行自动清理 |
Daemon(守护进程)
--no-daemon
启动项目,就没有速度优势了gradle wrapper --stop
Initialization
Configuration
Execution
Task
。task是gardle中最小的任务单元,任务之间可以进行复杂的操作(动态创建任务,多任务间依赖调用)
helloworld
即当前任务的名字,closure
闭包作用是对helloworld
任务进行Configuration
,可以在closure
中调用doLast或dependsOn等方法,在helloworld
的Configuration
期间进行wrapper(例如,调用其他任务,或者动态调用任务等)并不执行
,执行任务时,会调用该方法。doFirst相反./gradlew help
,任何gradle项目都有一个该task,可以执行此命令观察taks执行的流程是否如预期,tips
使用该命令可以查看到所需依赖下载状态(IDE中只能看到是否配置好依赖,但是无法确定还差多少
完成)Project
。gradle项目中一切无主的方法都会去Project中查找,如task;若是多项目工程,用project.parent.childProjects
对不同的子项目进行配置或者依赖
afterEvaluate方法,钩子函数。当前项目的Project实例操作完成后(即在生命周期configure阶段gradle引擎执行完一次build.gradle后,才会执行该方法,并不会因为它位置在最前面就先执行,有趣的是Java的main方法执行顺序是按照方法排列的顺序)进行一些动作,beforeEvaluate是与它对应的钩子函数
allprojects方法,对一个多项目工程中,所有Project实例进行的操作
file方法,读取文件
findProject方法,用名字去查找多项目中某一个项目的Project实例
findProperty方法,去查找某一个属性
getBuildDir方法,查找在项目下一个名为build目录下临时的构建输出
classpath与gradle
/**
*repositories方法和dependencies方法都是无助的闭包函数,构建时会在gradle的Project的API中找具体实现
*任何grdle项目中的无主方法都在Project的API中
*
*/
//指定中央仓库
repositories{
mavenCentral()
}
//项目所需的依赖
dependencies{
compile group:‘org.apache.commons‘,name:‘commons-lang3‘,version:‘3.9‘
}
buildscript{
//指定中央仓库
repositories{
mavenCentral()
}
//项目所需的依赖
dependencies{
compile group:‘org.apache.commons‘,name:‘commons-lang3‘,version:‘3.9‘
}
}
Gradle 与 Java 项目运行在各自的JVM中,Java 项目中的依赖的jar 包通过build.gradle中的dependencies
中导入,实际上gradle是将jar添加进了java的classpath中,但是gradle自身的jvm的classpath中并没有导入这样的jar包
Gradle在build.gradle中使用第三方jar包或使用自定义的插件有两种方法:
repositories
写jar包仓库,在dependencies
中填jar包信息,并声明生命周期public class MyPlugin implements Plugin<Project>{
@Override
public void apply(Project project){
for(int i = 0;i<10;i++){
project.task("task"+i)
}
}
}
原文:https://www.cnblogs.com/luckyCoder/p/12732443.html