package Ġcom . lab ij ie . infra . gradle Ċ Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . Task Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ Author : ĠAnd ers ĠX iao Ċ Ġ* Ġ@ Date : Ġ 2 0 2 1 / 1 2 / 7 Ċ Ġ* Ġ@ Description : Ċ Ġ*/ Ċ class ĠInf ra Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠTask . execute () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . actions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . execute ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġexecute Task ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . task Dependencies . get Dependencies ( task ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Task Ġ-> Ġexecute Task ( sub Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . execute () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( target : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget . extensions . create ( Inf ra Extension . Name , ĠInf ra Extension :: class . java , Ġtarget ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġbuild Ġ= Ġtarget . tasks . find ByName (" build ") Ċ // ĠĠĠĠĠĠĠ Ġif ( target . parent Ġ== Ġnull Ġ&& Ġbuild Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . tasks . create (" fast Build ", ĠExec :: class . java ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . group Ġ= Ġ" build " Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġmutable ListOf < String >() Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add (" gradle ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add (" build ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add ("-- parallel ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add ("- x Ġtest ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( target . child Projects . any Ġ{ t -> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . value . tasks . find ByName (" k sp Kotlin ") Ġ!= Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ){ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add ("- x Ġk sp Kotlin ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . gradle . gradle Home Dir Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGradle Build (). apply Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Tasks ( tasks ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . command Line (* args . to Typed Array ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }