Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . dsl . Dependency Handler Ċ import Ġorg . gradle . api . attributes . Attribute Ċ Ċ open Ġclass ĠMy De precation Plugin : ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠLifecycle Ġ{ ĊĠĠĠĠĠĠĠ ĠA LI VE , ĊĠĠĠĠĠĠĠ ĠDE PRECATED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlifecycle Attribute : ĠAttribute < Lifecycle > Ġ= ĠAttribute . of (" org . my org . lifecycle ", ĠLifecycle :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . setup Matching Strategy () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġinformation Ġcould Ġbe Ġretrieved Ġfrom Ġan Ġexternal Ġservice ĊĠĠĠĠĠĠĠ Ġproject . dependencies . de prec ate (" s ust itution rule : direct substitute ", Ġ" 2 . 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġproject . dependencies . de prec ate (" s ust itution rule : substitute ", Ġ" 1 . 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġ// ĠLists Ġall Ġknown Ġversions Ġof Ġ" range substitute ", Ġbut Ġyou Ġcould Ġalso Ġimplement / reuse Ġrange Ġmatching Ġin Ġthe Ġwith Dependencies . filter Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġproject . dependencies . de prec ate (" s ust itution rule : range substitute ", Ġ" 2 . 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġproject . dependencies . de prec ate (" s ust itution rule : range substitute ", Ġ" 2 . 2 . 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠProject . setup Matching Strategy () Ġ{ ĊĠĠĠĠĠĠĠ Ġdependencies . attributes Schema . attribute ( Attribute . of ("", ĠString :: class . java )). compatibility Rules . add () ĊĠĠĠĠĠĠĠ Ġval Ġmatching Strategy Ġ= Ġdependencies . attributes Schema . attribute ( lifecycle Attribute ) ĊĠĠĠĠĠĠĠ Ġmatching Strategy . ordered Ġ{ Ġa 1 : ĠLifecycle , Ġa 2 : ĠLifecycle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 . ordinal . compareTo ( a 2 . ordinal ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfigurations . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute ( lifecycle Attribute , ĠLifecycle . AL IVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠDependency Handler . de prec ate ( module : ĠString , Ġversion : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomponents . with Module ( module ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id . version Ġ== Ġversion ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Variants Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattributes Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute ( lifecycle Attribute , ĠLifecycle . DEPRECATED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ