package Ġuk . dio x ic . gradle . plugins . build Ċ Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ Ċ class ĠBuild Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġopen Ġclass ĠBuild Config Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠdisplayName : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar ĠmoduleName : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġmain Class : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġpublish : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġtest able : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġvar Ġlogging : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġvar Ġlogging Api : ĠLogging Api Ġ= ĠLogging Api . SL F 4 J ĊĠĠĠĠĠĠĠ Ġvar Ġlogging Implementation : ĠLogging Impl Ġ= ĠLogging Impl . LOG 4 J 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ): ĠUnit Ġ= Ġproject . run Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig : ĠBuild Config Ġ= Ġextensions . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" build Config ", ĠBuild Config :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġafter Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Library Ġ= Ġhas Plugin (" java - library ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Platform Ġ= Ġhas Plugin (" java - platform ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġproject . plugins . forEach Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Plugin (" java ") Ġ&& Ġ! is Platform ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Java () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config . test able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Testing () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config . logging ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Logging ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Only Ġ= Ġis Library , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ= Ġconfig . logging Implementation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config . main Class Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfat Jar ( config . main Class !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Plugin (" kotlin ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Kotlin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure D ok ka () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Library ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Java Pack aging ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmoduleName Ġ= Ġrequire NotNull ( config . moduleName ) Ġ{ Ġ" moduleName Ġmissing !" Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config . publish Ġ&& Ġ( is Library Ġ|| Ġis Platform )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Son atype Publishing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdisplayName Ġ= Ġrequire NotNull ( config . displayName ) Ġ{ Ġ" displayName Ġmissing !" Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Platform Ġ= Ġis Platform ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ