import Ġorg . jetbrains . kotlin . gradle . dsl . Cor outines Ċ Ċ build script Ġ{ ĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġmaven Central () ĊĠĠĠĠĠĠĠ Ġj center () ĊĠĠĠĠĠĠĠ Ġmaven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Url (" https :// plugins . gradle . org / m 2 /") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠ Ġclasspath (" org . jetbrains . kotlin : kotlin - gradle - plugin :${ property (" kotlin . version ") }") ĊĠĠĠ Ġ} Ċ } Ċ plugins Ġ{ ĊĠĠĠ Ġ// Ġhttps :// github . com / diff plug / spot less / tree / master / plugin - gradle ĊĠĠĠ Ġid (" com . diff plug . gradle . spot less ") Ġversion Ġ" 3 . 1 0 . 0 " ĊĠĠĠ Ġid (" com . jfrog . bin tray ") Ġversion Ġ" 1 . 8 . 2 " ĊĠĠĠ Ġj aco co ĊĠĠĠ Ġ` maven - publish ` Ċ } Ċ Ċ object ĠVersions Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġversion Ġof ĠK t Lint Ġto Ġbe Ġused Ġfor Ġlint ing Ġthe ĠKotlin Ġand ĠKotlin ĠScript Ġfiles . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconst Ġval ĠK TL INT Ġ= Ġ" 0 . 2 3 . 1 " Ċ } Ċ Ċ all projects Ġ{ ĊĠĠĠ Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġplugin (" com . diff plug . gradle . spot less ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġgroup Ġ= Ġ" de . n iel sf alk . ktor " ĊĠĠĠ Ġversion Ġ= Ġ" 0 . 5 . 0 " ĊĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġmaven Central () ĊĠĠĠĠĠĠĠ Ġj center () ĊĠĠĠĠĠĠĠ Ġmaven Ġ{ Ġset Url (" https :// dl . bin tray . com / kotlin / ktor ") Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠDependency Handler . ktor ( name : ĠString ) Ġ= ĊĠĠĠ Ġcreate ( group Ġ= Ġ" io . ktor ", Ġname Ġ= Ġname , Ġversion Ġ= Ġ" 1 . 3 . 0 ") Ċ Ċ sub projects Ġ{ ĊĠĠĠ Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġplugin (" kotlin ") ĊĠĠĠĠĠĠĠ Ġplugin (" java - library ") ĊĠĠĠĠĠĠĠ Ġplugin (" jac oco ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠ Ġ" api "( kotlin ( module Ġ= Ġ" stdlib ", Ġversion Ġ= Ġproperty (" kotlin . version ") Ġas ĠString )) ĊĠĠĠĠĠĠĠ Ġ" api "( kotlin ( module Ġ= Ġ" reflect ", Ġversion Ġ= Ġproperty (" kotlin . version ") Ġas ĠString )) ĊĠĠĠĠĠĠĠ Ġ" api "( ktor (" ktor - locations ")) ĊĠĠĠĠĠĠĠ Ġ" api "( ktor (" ktor - server - core ")) ĊĊĠĠĠĠĠĠĠ Ġ" test Implementation "( ktor (" ktor - server - test - host ")) ĊĠĠĠĠĠĠĠ Ġ" test Implementation "( ktor (" ktor - gson ")) ĊĠĠĠĠĠĠĠ Ġ" test Implementation "( group Ġ= Ġ" com . w inter be ", Ġname Ġ= Ġ" ex pe kt ", Ġversion Ġ= Ġ" 0 . 5 . 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġspot less Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk tl int ( Versions . K TL INT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrim Trailing Whitespace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend With New line () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtasks . with Type < Test > Ġ{ ĊĠĠĠĠĠĠĠ Ġextensions . configure ( type Of < J aco co Task Extension >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠFix Ġfor ĠJ aco co Ġbreaking ĠBuild ĠCache Ġsupport . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġhttps :// github . com / gradle / gradle / issues / 5 2 6 9 ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Append Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtasks . with Type < J aco co Report > Ġ{ ĊĠĠĠĠĠĠĠ Ġreports Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhtml . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcsv . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġj aco co Root Report Ġ= Ġtasks . register < J aco co Report >(" jac oco Root Report ") Ġ{ ĊĠĠĠ Ġgroup Ġ= ĠLifecycle Base Plugin . VER IFICATION _ GROUP ĊĠĠĠ Ġdescription Ġ= Ġ" Gener ates Ġan ĠHTML Ġcode Ġcoverage Ġreport Ġfor Ġall Ġsub - projects ." ĊĊĠĠĠ Ġval Ġj aco co Report Tasks Ġ= ĊĠĠĠĠĠĠĠ Ġsub projects ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFilter Ġout Ġsource Ġsets Ġthat Ġdon 't Ġhave Ġtests Ġin Ġthem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOtherwise , ĠJ aco co Ġtries Ġto Ġgenerate Ġcoverage Ġdata Ġfor Ġtests Ġthat Ġdon 't Ġexist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! it . java . source Sets [" test "]. all Source . isEmpty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . tasks [" jac oco Test Report "] Ġas ĠJ aco co Report Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠ Ġdepends On ( jac oco Report Tasks ) ĊĊĠĠĠ Ġexecution Data . set From ( Callable Ġ{ Ġj aco co Report Tasks . map Ġ{ Ġit . execution Data Ġ} Ġ}) ĊĊĠĠĠ Ġsub projects . forEach Ġ{ Ġtested Project Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġsource Sets Ġ= Ġtested Project . java . source Sets ĊĠĠĠĠĠĠĠ Ġval Ġmain Source Set Ġ= Ġsource Sets [" main "] ĊĠĠĠĠĠĠĠ Ġthis @ register . additional Source Dirs ( main Source Set . all Source . source Directories ) ĊĠĠĠĠĠĠĠ Ġthis @ register . additional Class Dirs ( main Source Set . output ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreports Ġ{ ĊĠĠĠĠĠĠĠ Ġhtml . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġxml . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcsv . isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ Ċ all projects Ġ{ ĊĠĠĠ Ġ// ĠConfig ures Ġthe ĠJ aco co Ġtool Ġversion Ġto Ġbe Ġthe Ġsame Ġfor Ġall Ġprojects Ġthat Ġhave Ġit Ġapplied . ĊĠĠĠ Ġplugin Manager . with Plugin (" jac oco ") Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthis Ġproject Ġhas Ġthe Ġplugin Ġapplied , Ġconfigure Ġthe Ġtool Ġversion . ĊĠĠĠĠĠĠĠ Ġj aco co Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtool Version Ġ= Ġ" 0 . 8 . 2 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ project (": ktor - swagger ") Ġ{ ĊĠĠĠ Ġapply ( plugin Ġ= Ġ" com . jfrog . bin tray ") ĊĠĠĠ Ġapply ( plugin Ġ= Ġ" maven - publish ") ĊĊĠĠĠ Ġval Ġsource Jar Task Ġ= Ġtask < Jar >(" source Jar ") Ġ{ ĊĠĠĠĠĠĠĠ Ġfrom ( java . source Sets [" main "]. all Source ) ĊĠĠĠĠĠĠĠ Ġclassifier Ġ= Ġ" sources " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġpublication Name Ġ= Ġ" publication -$ name " ĊĊĠĠĠ Ġ// ĠThis Ġensures Ġthat Ġthe Ġentire Ġproject 's Ġconfiguration Ġhas Ġbeen Ġresolved Ġbefore Ġcreating Ġa Ġpublish Ġartifact . ĊĠĠĠ Ġpublishing Ġ{ ĊĠĠĠĠĠĠĠ Ġpublications Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate < Maven Publication >( publication Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( components [" java "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact ( source Jar Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġbin tray Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Ġ= Ġproperties [" bin tray . publish . user "]. toString () ĊĠĠĠĠĠĠĠ Ġkey Ġ= Ġproperties [" bin tray . publish . key "]. toString () ĊĠĠĠĠĠĠĠ Ġset Public ations ( publication Name ) ĊĠĠĠĠĠĠĠ Ġwith ( pkg ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Org Ġ= Ġ" ktor - swagger " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Ġ= Ġ" maven - artifacts " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" ktor - swagger " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublish Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset License s (" Apache - 2 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Labels (" ktor ", Ġ" kotlin ", Ġ" web Ġserver ", Ġ" swagger ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv cs Url Ġ= Ġ" https :// github . com / n iel sf alk / ktor - swagger . git " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgithub Repo Ġ= Ġ" https :// github . com / n iel sf alk / ktor - swagger " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠHeroku Ġwill Ġinvoke Ġthis Ġtask Ġif Ġit Ġis Ġpresent . Ċ Ġ* Ġhttps :// dev center . heroku . com / articles / deploy ing - gradle - apps - on - heroku # verify - that - your - build - file - is - set - up - correct ly Ċ Ġ*/ Ċ task (" stage ") Ġ{ ĊĠĠĠ Ġdescription Ġ= Ġ" Task Ġexecuted Ġby Ġher oku Ġto Ġbuild Ġthis Ġgradle Ġproject Ġfor Ġdeployment ." ĊĠĠĠ Ġgroup Ġ= Ġ" heroku " ĊĠĠĠ Ġdepends On (": ktor - sample - swagger : install Dist ") Ċ } Ċ Ċ tasks . with Type < Wrapper >(). configure Each Ġ{ ĊĠĠĠ Ġgradle Version Ġ= Ġ" 5 . 1 " ĊĠĠĠ Ġdistribution Type Ġ= ĠWrapper . Distribution Type . ALL Ċ } Ċ Ċ /** Ċ Ġ* ĠConfig ures Ġthe Ġ[ kotlin ][ org . jetbrains . kotlin . gradle . dsl . Kotlin Jvm Project Extension ] Ġproject Ġextension . Ċ Ġ*/ Ċ fun ĠProject .` kotlin `( configure : Ġorg . jetbrains . kotlin . gradle . dsl . Kotlin Jvm Project Extension . () Ġ-> ĠUnit ): ĠUnit Ġ= ĊĠĠĠ Ġextensions . configure (" kotlin ", Ġconfigure ) Ċ Ċ /** Ċ Ġ* ĠRetrieves Ġthe Ġ[ java ][ org . gradle . api . plugins . Java Plugin Convention ] Ġproject Ġconvention . Ċ Ġ*/ Ċ val ĠProject .` java `: Ġorg . gradle . api . plugins . Java Plugin Convention ĊĠĠĠ Ġget () Ġ= Ġconvention . get Plugin ByName (" java ")