package Ġcom . av ito . android . plugin Ċ Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . dsl . Repository Handler Ċ import Ġorg . gradle . api . artifacts . repositories . Maven Artifact Repository Ċ Ċ class ĠEn force Repos Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( target : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( target . is Root ()) Ġ{ Ġ" En force Repos Ġplugin Ġmust Ġbe Ġapplied Ġto Ġthe Ġroot Ġproject " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġart ifactory Url Ġ= Ġtarget . property (" art ifactory Url "). toString () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPre serve Ġorder Ġof Ġrepositories Ġdue Ġto Ġaccident al Ġwrong Ġgoogle - android Ġlibraries Ġresolving Ġin Ġj center ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġav ito Repos Ġ= Ġlinked Set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// maven . google . com /", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / google - android ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / j center ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / ext - release - local ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / plugins - release - local ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / libs - release - local ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / intellij - repository ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / jetbrains ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / jit pack . io ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / fabric ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / repo 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / kotlin - e ap ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / gradle - plugins ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / gradle - libs - releases ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ art ifactory Url / ktor " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġregistered Repos Ġ= Ġav ito Repos Ġ+ Ġlinked Set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" google / m 2 repository ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" extras / m 2 repository ", Ġ// google Ġplay Ġservices ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ". gradle / cache s ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ". gradle - test - kit -", Ġ// for Ġtesting Ġbuild ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" gradle - user - home / cache s ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" embedded - kotlin - repo -" Ġ// for Ġembedded Ġin Ġd sl Ġkotlin Ġplugin ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġunused Repos Ġ= Ġlinked Set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" android / m 2 repository ", Ġ// Ġold Ġandroid Ġsdk - bund led Ġrepos ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" gradle / m 2 repository ", Ġ// Ġbundled Ġwith Ġandroid Ġstudio Ġgradle Ġplugin , Ġwe Ġwill Ġdownload Ġit Ġinstead ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jetbrains . com / intellij - repository " Ġ// Ġadded Ġimplicitly Ġby Ġidea - gradle - plugin ĊĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠĠĠĠĠ Ġtarget . sub projects Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepositories Ġ= Ġit . repositories ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġremoves Ġall Ġdep 's Ġrepositories Ġinstead Ġof Ġ[ registered Repos ] ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠWhy Ġwe Ġneed Ġthis ? ĠTo Ġfulfill Ġcontract : Ġall Ġdependencies Ġprox ied Ġthrough Ġin - house Ġart ifactory Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠS ad ly , Ġwe Ġcan 't Ġproxy Ġall Ġdependencies , Ġbecause Ġof Ġsome Ġpropri etary ( google Ġplay Ġservices ) Ġand Ġhard code Ġin Ġsome Ġplugins ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories . all Maven Ġ{ Ġrepo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġrepo . url . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( unused Repos . find Ġ{ Ġslug Ġ-> Ġurl . contains ( slug ) Ġ} Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories . remove ( repo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( registered Repos . find Ġ{ Ġslug Ġ-> Ġurl . contains ( slug ) Ġ} Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Project Ġuses Ġnot Ġregistered Ġmaven Ġrepository : Ġ$ url . Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Use Ġart ifactory Ġinstead " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġav ito Repos . forEach Ġ{ Ġrepo Url Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories . maven Ġ{ Ġrepo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . set Url ( repo Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( repo Url . endsWith ("/ google - android ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Un stable Api Usage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . include GroupBy Regex (" android \\. arch \\ .. +") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . include GroupBy Regex (" android x \\ .. +") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . include GroupBy Regex (" com \\. android \\ .. +") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . include Group (" com . google . android . gms ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . include Group (" com . google . android . play ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . include Group (" com . google . firebase ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . include Group (" com . google . android . material ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . include Group (" com . crash ly t ics . sdk . android ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . include Group (" io . fabric . sdk . android ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Un stable Api Usage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . exclude GroupBy Regex (" android \\. arch \\ .. +") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . exclude GroupBy Regex (" android x \\ .. +") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . exclude GroupBy Regex (" com \\. android \\ .. +") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . exclude Group (" com . google . android . gms ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . exclude Group (" com . google . android . play ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . exclude Group (" com . google . firebase ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . exclude Group (" com . crash ly t ics . sdk . android ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . exclude Group (" io . fabric . sdk . android ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") Ġ// used Ġin Ġscript ĊĠĠĠ Ġprivate Ġfun ĠRepository Handler . all Maven ( action : Ġ( Maven Artifact Repository ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġall Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠMaven Artifact Repository ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠProject . is Root () Ġ= Ġ( project Ġ== Ġproject . root Project ) Ċ } Ċ