gradle構(gòu)建的三個(gè)生命周期階段:
初始化階段
配置階段
執(zhí)行階段
//在project進(jìn)行配置前調(diào)用,child project必須在root project中設(shè)置才會(huì)生效,root project必須在settings.gradle中設(shè)置才會(huì)生效
void beforeProject(Closure closure)
//在project配置后調(diào)用
afterProject(Closure closure)
//構(gòu)建開(kāi)始前調(diào)用
void buildStarted(Closure closure)
//構(gòu)建結(jié)束后調(diào)用
void buildFinished(Closure closure)
//所有project配置完成后調(diào)用
void projectsEvaluated(Closure closure)
//當(dāng)settings.gradle中引入的所有project都被創(chuàng)建好后調(diào)用,只在該文件設(shè)置才會(huì)生效
void projectsLoaded(Closure closure)
//settings.gradle配置完后調(diào)用,只對(duì)settings.gradle設(shè)置生效
void settingsEvaluated(Closure closure)
構(gòu)建plugin
方式一:
gradle項(xiàng)目默認(rèn)buildSrc名字的module是gradle的配置項(xiàng)目,執(zhí)行順序是在所有項(xiàng)目的最前面。下面是大致的實(shí)現(xiàn)步驟:
1.在項(xiàng)目創(chuàng)建buildSrc名字java module
2.在settings.gradle文件中移除其引用,使其成為一個(gè)獨(dú)立的項(xiàng)目
3.build.gradle加入gradle的依賴配置,類似根build.gradle文件的配置
4.創(chuàng)建Plugin implements Plugin<Project> class
5.在app module中導(dǎo)入該類,并且引入該插件。
gradle屬性,可以在Plugin中設(shè)置類似:
project.getExtensions().create("my_extension",MyPluginExtension.class);
設(shè)置了這個(gè)屬性,我們可以在其他的build.gradle文件中使用該屬性給plugin傳值。