gradle構(gòu)建的三個生命周期階段:
初始化階段
配置階段
執(zhí)行階段
//在project進(jìn)行配置前調(diào)用,child project必須在root project中設(shè)置才會生效,root project必須在settings.gradle中設(shè)置才會生效
void beforeProject(Closure closure)
//在project配置后調(diào)用
afterProject(Closure closure)
//構(gòu)建開始前調(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è)置才會生效
void projectsLoaded(Closure closure)
//settings.gradle配置完后調(diào)用,只對settings.gradle設(shè)置生效
void settingsEvaluated(Closure closure)
構(gòu)建plugin
方式一:
gradle項目默認(rèn)buildSrc名字的module是gradle的配置項目,執(zhí)行順序是在所有項目的最前面。下面是大致的實現(xiàn)步驟:
1.在項目創(chuàng)建buildSrc名字java module
2.在settings.gradle文件中移除其引用,使其成為一個獨立的項目
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è)置了這個屬性,我們可以在其他的build.gradle文件中使用該屬性給plugin傳值。