/* Ċ Ġ* Ġ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 . targets . js Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . invocation . Gradle Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Build Finished Listener Service Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Kotlin Plugin In Multiple Projects Holder Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . MULTIPLE _ K OT LIN _ PLUGIN S _ LOADED _ WARNING Ċ import Ġorg . jetbrains . kotlin . gradle . utils . is Configuration Cache Available Ċ Ċ internal Ġclass ĠMultiple Plugin Declaration Detector Ċ private Ġconstructor () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġplugin In Multiple Projects Holder Ġ= ĠKotlin Plugin In Multiple Projects Holder ( ĊĠĠĠĠĠĠĠ Ġtrack Plugin Versions Separ ately Ġ= Ġfalse ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġdetect ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplugin In Multiple Projects Holder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Project ( project ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( plugin In Multiple Projects Holder . isIn Multiple Projects ( project )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror ( MULTIPLE _ K OT LIN _ PLUGIN S _ LOADED _ WARNING ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWe Ġcan 't Ġuse ĠKotlin Ġobject Ġbecause Ġwe Ġneed Ġnew Ġinstance Ġon Ġeach ĠGradle Ġrebuild ĊĠĠĠ Ġ// ĠBut Ġif Ġwe Ġinside ĠGradle Ġdaemon , ĠKotlin Ġobject Ġwill Ġbe Ġshared Ġbetween Ġbuilds ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ field : Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠMultiple Plugin Declaration Detector ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Synchron ized ĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetInstance ( gradle : ĠGradle ): ĠMultiple Plugin Declaration Detector Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdetector Ġ= ĠMultiple Plugin Declaration Detector () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= Ġdetector ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Finished Listener Service . getInstance ( gradle ). onClose Ġ{ Ġinstance Ġ= Ġnull Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdetector ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdetect ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetInstance ( project . gradle ). detect ( project ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ