import Ġcom . github . ben man es . gradle . versions . updates . Dependency Updates Task Ċ import Ġorg . gradle . api . tasks . testing . logging . Test Exception Format Ċ import Ġorg . gradle . api . tasks . testing . logging . Test Log Event Ċ import Ġjava . lang . System . getenv Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġkotlin (" multi platform ") ĊĠĠĠ Ġid (" java - library ") Ġ// Ġrequired Ġfor Ġj aco co Ġplugin ĊĠĠĠ Ġj aco co ĊĠĠĠ Ġid (" com . github . ben - man es . versions ") ĊĠĠĠ Ġid (" maven - publish ") Ċ } Ċ Ċ kotlin Ġ{ ĊĠĠĠ Ġexplicit Api () ĊĠĠĠ Ġtargets Ġ{ ĊĠĠĠĠĠĠĠ Ġj vm Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompil ations . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Options . jvm Target Ġ= Ġ" 1 . 8 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġjs ( BOTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompil ations Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . forEach Ġ{ Ġcompilation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompilation . compile Kotlin Task . kotlin Options . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Map Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Kind Ġ= Ġ" umd " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Map Embed Sources Ġ= Ġ" always " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( compilation . name Ġ== Ġ" main ") Ġmain Ġ= Ġ" no Call " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnodejs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Mo cha Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimeout Ġ= Ġ" 1 0 s " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsource Sets Ġ{ ĊĠĠĠĠĠĠĠ Ġcommon Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation ( kotlin (" test - common ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation ( kotlin (" test - annotations - common ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġj vm Test Ġby Ġgetting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation ( kotlin (" test - junit ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġjs Test Ġby Ġgetting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation ( kotlin (" test - js ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġall Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Settings . enable Language Feature (" Inline Classes ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks Ġ{ ĊĠĠĠ Ġwith Type < Abstract Test Task > Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Logging Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents Ġ= Ġset Of ( Test Log Event . FAILED , ĠTest Log Event . PAS SED , ĠTest Log Event . SKIP PED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Exceptions Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception Format Ġ= ĠTest Exception Format . FULL ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ jac oco Ġ{ ĊĠĠĠ Ġtool Version Ġ= ĠVersions . jac oco Plugin Ċ } Ċ Ċ tasks . with Type < J aco co Report > Ġ{ ĊĠĠĠ Ġdepends On (" jvm Test ") ĊĠĠĠ Ġgroup Ġ= Ġ" Reporting " ĊĠĠĠ Ġdescription Ġ= Ġ" Generate ĠJ aco co Ġcoverage Ġreports ." ĊĠĠĠ Ġval Ġcoverage Source Dirs Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ Ġ" src / common Main ", ĊĠĠĠĠĠĠĠ Ġ" src / jvm Main " ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġclass Files Ġ= ĠFile ("${ build Dir }/ classes / kotlin / jvm / main ") ĊĠĠĠĠĠĠĠ Ġ. walk Bottom Up () ĊĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠ Ġclass Directories . set From ( class Files ) ĊĠĠĠ Ġsource Directories . set From ( files ( coverage Source Dirs )) ĊĠĠĠ Ġadditional Source Dirs . set From ( files ( coverage Source Dirs )) ĊĊĠĠĠ Ġexecution Data ĊĠĠĠĠĠĠĠ Ġ. set From ( files ("${ build Dir }/ jac oco / jvm Test . exec ")) ĊĠĠĠ Ġreports Ġ{ ĊĠĠĠĠĠĠĠ Ġxml . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcsv . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġhtml . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġhtml . destination Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ("${ build Dir }/ jac oco - reports / html ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThe ĠGradle ĠVersions ĠPlugin Ġis Ġanother ĠGradle Ġplugin Ġto Ġdiscover Ġdependency Ġupdates Ċ Ġ* Ġplugins . id (" com . github . ben - man es . versions ") Ċ Ġ* ĠRun Ġit Ġwith Ġ$ Ġ./ gradle w Ġ-- scan Ġdependency Updates Ċ Ġ* Ġhttps :// github . com / ben - man es / gradle - versions - plugin Ċ Ġ* Ġ**/ Ċ tasks . named (" dependency Updates ", ĠDependency Updates Task :: class ). configure Ġ{ ĊĠĠĠ Ġfun Ġis Non Stable ( version : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstable Keyword Ġ= ĠlistOf (" RELEASE ", Ġ" FINAL ", Ġ" GA "). any Ġ{ Ġversion . toUpperCase (). contains ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġ"^ [ 0 - 9 ,. v - ]+ (- r )? $ ". to Regex () ĊĠĠĠĠĠĠĠ Ġval Ġis Stable Ġ= Ġstable Keyword Ġ|| Ġregex . matches ( version ) ĊĠĠĠĠĠĠĠ Ġreturn Ġis Stable . not () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreject Version If Ġ{ ĊĠĠĠĠĠĠĠ Ġis Non Stable ( candidate . version ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġcheck Constraints Ġ= Ġtrue Ċ } Ċ Ċ getenv (" GITHUB _ REPOSITORY ") ?. let Ġ{ Ġgithub Repo Ġ-> ĊĠĠĠ Ġval Ġ( owner , Ġrepo Name ) Ġ= Ġgithub Repo . split ('/ '). map ( String :: toLowerCase ) ĊĠĠĠ Ġgroup Ġ= Ġ" com . github .$ owner .$ repo Name " ĊĠĠĠ Ġversion Ġ= ĠSystem . getProperty (" version ") ĊĠĠĠ Ġpublishing Ġ{ ĊĠĠĠĠĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" github " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġuri (" https :// maven . pkg . github . com /$ github Repo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredentials ( Password Credentials :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ