package Ġde . ny code . gradle . sp ig ot _ dependency _ loader Ċ Ċ import Ġde . ny code . gradle . sp ig ot _ dependency _ loader . utils . create Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . tasks . Source Set Container Ċ import Ġorg . gradle . language . jvm . tasks . Process Resources Ċ import Ġkotlin . io . path . Experimental Path Api Ċ import Ġkotlin . io . path . div Ċ import Ġkotlin . io . path . exists Ċ Ċ class ĠGradle Sp ig ot Dependency Loader Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĠĠĠ Ġ@ Opt In ( Experimental Path Api :: class ) ĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġproject . make Extension () ĊĠĠĠĠĠĠĠ Ġval Ġsp ig ot Dependencies Ġ= Ġproject . make Dependency Config () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( extension . create Default Task . getOrElse ( true )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Un stable Api Usage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocess Resources Ġ= Ġproject . tasks . findBy Path (" process Resources ") Ġas ĠProcess Resources ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain Ġ= Ġproject . source Sets . get ByName (" main ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexport Task Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . create (" export Dependencies To Plugin Y ml ", ĠExport Plugin Dependencies Task :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( process Resources ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocessed Yaml Ġ= Ġproject . build Dir . to Path () Ġ/ Ġ" resources " Ġ/ Ġmain . name Ġ/ Ġ" plugin . yml " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġif Ġ( processed Yaml . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocessed Yaml ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain . resources . files . first OrNull Ġ{ Ġfile Ġ-> Ġfile . name Ġ== Ġ" plugin . yml " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Please Ġcreate Ġa Ġplugin . yml Ġin Ġthe Ġmain Ġresources Ġdirectory Ġor Ġuse Ġsp ig ot Dependency Loader Ġ{ Ġcreate Default Task . set ( false ) Ġ} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Y ml . set ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Directory . set ( processed Yaml . parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . named (" classes ") Ġ{ Ġit . depends On ( export Task ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . configurations . get ByName (" compile Only "). extends From ( sp ig ot Dependencies ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠProject . make Extension () Ġ= ĊĠĠĠ Ġextensions . create < Sp ig ot Dependency Loader Extension >(" sp ig ot Dependency Loader ") Ċ Ċ private Ġfun ĠProject . make Dependency Config (): ĠConfiguration Ġ{ ĊĠĠĠ Ġval Ġsp ig ot Dependencies Ġ= Ġconfigurations . create (" sp ig ot ") ĊĠĠĠ Ġrepositories . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġit . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ{ Ġcontent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . not For Configurations ( sp ig ot Dependencies . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġrepositories . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġmaven Central Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ{ Ġcontent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . only For Configurations ( sp ig ot Dependencies . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġsp ig ot Dependencies Ċ } Ċ Ċ private Ġval ĠProject . source Sets : ĠSource Set Container ĊĠĠĠ Ġget () Ġ= Ġextensions . getBy Type ( Source Set Container :: class . java ) Ċ