/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . gradle . plugin Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . plugins . Extra Properties Extension Ċ Ċ internal Ġclass ĠKotlin Plugin In Multiple Projects Holder ( ĊĠĠĠ Ġprivate Ġval Ġtrack Plugin Versions Separ ately : ĠBoolean Ċ ) Ġ{ ĊĠĠĠ Ġ// ĠSt oring Ġthis Ġproperty Ġhere Ġmight Ġbe Ġconsidered Ġthe Ġreason ĊĠĠĠ Ġ// Ġwhy Ġthe Ġcorresponding Ġwarning Ġmessage Ġis Ġjust Ġshown Ġin Ġthe Ġfirst Ġbuild ĊĠĠĠ Ġ// Ġhttps :// yout rack . jetbrains . com / issue / KT - 5 0 5 9 8 ĊĠĠĠ Ġprivate Ġvar Ġloaded In Project Path : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġadd Project ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġkotlin Plugin Version : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġon Register : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( track Plugin Versions Separ ately Ġ== Ġ( kotlin Plugin Version Ġ!= Ġnull )) ĊĊĠĠĠĠĠĠĠ Ġval Ġproject Path Ġ= Ġproject . path ĊĊĠĠĠĠĠĠĠ Ġval Ġloaded In Projects PropertyName Ġ= Ġget PropertyName ( kotlin Plugin Version ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( loaded In Project Path Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloaded In Project Path Ġ= Ġproject Path ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġext Ġ= Ġproject . root Project . extensions . getBy Type ( Extra Properties Extension :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ext . has ( loaded In Projects PropertyName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext . set ( loaded In Projects PropertyName , Ġproject Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Register () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext . set ( loaded In Projects PropertyName , Ġ( ext . get ( loaded In Projects PropertyName ) Ġas ĠString ) Ġ+ Ġ";" Ġ+ Ġloaded In Project Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisIn Multiple Projects ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġkotlin Plugin Version : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( track Plugin Versions Separ ately Ġ== Ġ( kotlin Plugin Version Ġ!= Ġnull )) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Affected Projects ( project , Ġkotlin Plugin Version )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . size Ġ> Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Affected Projects ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġkotlin Plugin Version : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠList < String >? Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( track Plugin Versions Separ ately Ġ== Ġ( kotlin Plugin Version Ġ!= Ġnull )) ĊĊĠĠĠĠĠĠĠ Ġval Ġext Ġ= Ġget Ext ( project ) ĊĊĠĠĠĠĠĠĠ Ġval ĠpropertyName Ġ= Ġget PropertyName ( kotlin Plugin Version ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! ext . has ( propertyName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ( ext . get ( propertyName ) Ġas ĠString ). split ("; ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Ext ( project : ĠProject ): ĠExtra Properties Extension Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproject . root Project . extensions . getBy Type ( Extra Properties Extension :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget PropertyName ( version : ĠString ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" kotlin ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" plugin ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" loaded ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" in ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" projects ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString (".") ĊĠĠĠ Ġ} Ċ } Ċ Ċ const Ġval ĠMULTI PLE _ K OT LIN _ PLUGIN S _ LOADED _ WARNING : ĠString Ġ= ĊĠĠĠ Ġ" The ĠKotlin ĠGradle Ġplugin Ġwas Ġloaded Ġmultiple Ġtimes Ġin Ġdifferent Ġsub projects , Ġwhich Ġis Ġnot Ġsupported Ġand Ġmay Ġbreak Ġthe Ġbuild . Ġ\ n " Ġ+ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġmight Ġhappen Ġin Ġsub projects Ġthat Ġapply Ġthe ĠKotlin Ġplugins Ġwith Ġthe ĠGradle Ġ' plugins Ġ{ Ġ... Ġ}' ĠDSL Ġif Ġthey Ġspecify Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" explicit Ġversions , Ġeven Ġif Ġthe Ġversions Ġare Ġequal .\ n " Ġ+ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Please Ġadd Ġthe ĠKotlin Ġplugin Ġto Ġthe Ġcommon Ġparent Ġproject Ġor Ġthe Ġroot Ġproject , Ġthen Ġremove Ġthe Ġversions Ġin Ġthe Ġsub projects .\ n " Ġ+ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" If Ġthe Ġparent Ġproject Ġdoes Ġnot Ġneed Ġthe Ġplugin , Ġadd Ġ' apply Ġfalse ' Ġto Ġthe Ġplugin Ġline .\ n " Ġ+ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" See : Ġhttps :// docs . gradle . org / current / user guide / plugins . html # sec : sub projects _ plugins _ dsl " Ċ Ċ const Ġval ĠMULTI PLE _ K OT LIN _ PLUGIN S _ SPEC IFIC _ PROJECT S _ WARNING : ĠString Ġ= ĊĠĠĠ Ġ" The ĠKotlin Ġplugin Ġwas Ġloaded Ġin Ġthe Ġfollowing Ġprojects : Ġ" Ċ Ċ const Ġval ĠMULTI PLE _ K OT LIN _ PLUGIN S _ SPEC IFIC _ PROJECT S _ INFO : ĠString Ġ= Ġ" The Ġfull Ġlist Ġof Ġprojects Ġthat Ġloaded Ġthe ĠKotlin Ġplugin Ġis : Ġ" Ċ