import Ġjava . time . Duration Ċ import Ġcom . github . ben man es . gradle . versions . updates . Dependency Updates Task Ċ Ċ val Ġassert j Version Ġ= Ġ" 3 . 2 2 . 0 " Ċ val Ġkotlin Logging Version Ġ= Ġ" 2 . 1 . 2 1 " Ċ val Ġlog back Version Ġ= Ġ" 1 . 2 . 1 0 " Ċ val Ġn im bus Sdk Version Ġ= Ġ" 9 . 2 0 . 1 " Ċ val Ġmock WebServer Version Ġ= Ġ" 4 . 9 . 3 " Ċ val Ġj ack son Version Ġ= Ġ" 2 . 1 3 . 1 " Ċ val Ġnet ty Version Ġ= Ġ" 4 . 1 . 7 2 . Final " Ċ val Ġjunit J upiter Version Ġ= Ġ" 5 . 8 . 2 " Ċ val Ġkotlin Version Ġ= Ġ" 1 . 6 . 1 0 " Ċ val Ġfre emark er Version Ġ= Ġ" 2 . 3 . 3 1 " Ċ val Ġk ot est Version Ġ= Ġ" 5 . 0 . 3 " Ċ val Ġbo unc y Castle Version Ġ= Ġ" 1 . 7 0 " Ċ val Ġspring Boot Version Ġ= Ġ" 2 . 6 . 2 " Ċ val Ġreactor Test Version Ġ= Ġ" 3 . 4 . 1 3 " Ċ val Ġk tor Version Ġ= Ġ" 1 . 6 . 7 " Ċ Ċ val Ġmaven Repo BaseUrl Ġ= Ġ" https :// oss . son atype . org " Ċ val Ġmain Class Kt Ġ= Ġ" no . nav . security . mock . oauth 2 . Standalone Mock OAuth 2 Server Kt " Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġapplication ĊĠĠĠ Ġkotlin (" jvm ") Ġversion Ġ" 1 . 6 . 1 0 " ĊĠĠĠ Ġid (" se . pat ri ker des . use - latest - versions ") Ġversion Ġ" 0 . 2 . 1 8 " ĊĠĠĠ Ġid (" com . github . ben - man es . versions ") Ġversion Ġ" 0 . 4 0 . 0 " ĊĠĠĠ Ġid (" org . j mail en . kot linter ") Ġversion Ġ" 3 . 8 . 0 " ĊĠĠĠ Ġid (" com . google . cloud . tools . j ib ") Ġversion Ġ" 3 . 1 . 4 " ĊĠĠĠ Ġid (" com . github . john ren gel man . shadow ") Ġversion Ġ" 7 . 1 . 2 " ĊĠĠĠ Ġid (" net . research gate . release ") Ġversion Ġ" 2 . 8 . 1 " ĊĠĠĠ Ġid (" io . code arte . nexus - staging ") Ġversion Ġ" 0 . 3 0 . 0 " ĊĠĠĠ Ġid (" de . mar c phil ipp . nexus - publish ") Ġversion Ġ" 0 . 4 . 0 " ĊĠĠĠ Ġ` java - library ` ĊĠĠĠ Ġ` maven - publish ` ĊĠĠĠ Ġsigning Ċ } Ċ Ċ application Ġ{ ĊĠĠĠ Ġmain ClassName Ġ= Ġmain Class Kt Ċ } Ċ Ċ java Ġ{ ĊĠĠĠ Ġsource Compatibility Ġ= ĠJava Version . VERSION _ 1 1 ĊĠĠĠ Ġtarget Compatibility Ġ= ĠJava Version . VERSION _ 1 1 ĊĠĠĠ Ġwith Javadoc Jar () ĊĠĠĠ Ġwith Sources Jar () Ċ } Ċ Ċ apply ( plugin Ġ= Ġ" org . j mail en . kot linter ") Ċ Ċ repositories Ġ{ ĊĠĠĠ Ġmaven Central () ĊĠĠĠ Ġj center () Ċ } Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġimplementation ( kotlin (" stdlib ")) ĊĠĠĠ Ġimplementation ( kotlin (" reflect ")) ĊĠĠĠ Ġimplementation (" com . fasterxml . jackson . core : jackson - databind :$ jackson Version ") ĊĠĠĠ Ġimplementation (" ch . qos . log back : log back - classic :$ log back Version ") ĊĠĠĠ Ġapi (" com . squareup . okhttp 3 : mock webserver :$ mock WebServer Version ") ĊĠĠĠ Ġapi (" com . nim bus ds : oauth 2 - oidc - sdk :$ nim bus Sdk Version ") ĊĠĠĠ Ġimplementation (" io . netty : netty - all :$ netty Version ") ĊĠĠĠ Ġimplementation (" io . github . micro utils : kotlin - logging :$ kotlin Logging Version ") ĊĠĠĠ Ġimplementation (" com . fasterxml . jackson . module : jackson - module - kotlin :$ jackson Version ") ĊĠĠĠ Ġimplementation (" org . fre emark er : fre emark er :$ fre emark er Version ") ĊĠĠĠ Ġimplementation (" org . bouncycastle : b cp k ix - jdk 1 5 on :$ bounc y Castle Version ") ĊĠĠĠ Ġtest Implementation (" org . assertj : assertj - core :$ assertj Version ") ĊĠĠĠ Ġtest Implementation (" org . junit . jupiter : junit - jupiter - api :$ junit J upiter Version ") ĊĠĠĠ Ġtest Implementation (" org . junit . jupiter : junit - jupiter - params :$ junit J upiter Version ") ĊĠĠĠ Ġtest Implementation (" io . kot est : kot est - runner - junit 5 - jvm :$ kot est Version ") Ġ// Ġfor Ġk ot est Ġframework ĊĠĠĠ Ġtest Implementation (" io . kot est : kot est - assertions - core - jvm :$ kot est Version ") Ġ// Ġfor Ġk ot est Ġcore Ġj vm Ġassertions ĊĠĠĠ Ġtest Implementation (" org . jetbrains . kotlin : kotlin - test - junit 5 :$ kotlin Version ") ĊĠĠĠ Ġtest Runtime Only (" org . junit . jupiter : junit - jupiter - engine :$ junit J upiter Version ") ĊĠĠĠ Ġ// example Ġuse Ġwith Ġdifferent Ġframeworks ĊĠĠĠ Ġtest Implementation (" org . springframework . boot : spring - boot - starter - web flux :$ spring Boot Version ") ĊĠĠĠ Ġtest Implementation (" org . springframework . boot : spring - boot - starter - oauth 2 - resource - server :$ spring Boot Version ") ĊĠĠĠ Ġtest Implementation (" org . springframework . boot : spring - boot - starter - oauth 2 - client :$ spring Boot Version ") ĊĠĠĠ Ġtest Implementation (" org . springframework . boot : spring - boot - starter - test :$ spring Boot Version ") ĊĠĠĠ Ġtest Implementation (" io . project reactor : reactor - test :$ reactor Test Version ") ĊĠĠĠ Ġtest Implementation (" io . ktor : ktor - server - netty :$ ktor Version ") ĊĠĠĠ Ġtest Implementation (" io . ktor : ktor - server - sessions :$ ktor Version ") ĊĠĠĠ Ġtest Implementation (" io . ktor : ktor - locations :$ ktor Version ") ĊĠĠĠ Ġtest Implementation (" io . ktor : ktor - auth :$ ktor Version ") ĊĠĠĠ Ġtest Implementation (" io . ktor : ktor - auth - jwt :$ ktor Version ") ĊĠĠĠ Ġtest Implementation (" io . ktor : ktor - client - core :$ ktor Version ") ĊĠĠĠ Ġtest Implementation (" io . ktor : ktor - client - jackson :$ ktor Version ") ĊĠĠĠ Ġtest Implementation (" io . ktor : ktor - client - c io :$ ktor Version ") ĊĠĠĠ Ġtest Implementation (" io . ktor : ktor - server - test - host :$ ktor Version ") Ċ } Ċ Ċ nexus Staging Ġ{ ĊĠĠĠ Ġusername Ġ= ĠSystem . getenv (" SON AT YPE _ USERNAME ") ĊĠĠĠ Ġpassword Ġ= ĠSystem . getenv (" SON AT YPE _ PASSWORD ") ĊĠĠĠ Ġpackage Group Ġ= Ġ" no . nav " ĊĠĠĠ Ġdelay Between Retries In Millis Ġ= Ġ 5 0 0 0 Ċ } Ċ Ċ nexus Publishing Ġ{ ĊĠĠĠ Ġclient Timeout . set ( Duration . of Minutes ( 2 )) ĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġson atype () ĊĠĠĠ Ġ} Ċ } Ċ Ċ publishing Ġ{ ĊĠĠĠ Ġpublications Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate < Maven Publication >(" maven Java ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Id Ġ= Ġroot Project . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( components [" java "]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Mapping Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusage (" java - api ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Resolution Of (" runtime Classpath ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusage (" java - runtime ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Resolution Result () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpom Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . set ( root Project . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . set (" A Ġsimple Ġmock Ġoauth 2 Ġserver Ġbased Ġon ĠOk Http ĠMock WebServer ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . set (" https :// github . com / nav ik t /${ root Project . name }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicenses Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . set (" MIT ĠLicense ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . set (" https :// opensource . org / licenses / MIT ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevelopers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorganization . set (" NAV Ġ( Ar be ids - Ġog Ġvel fer d sd ire ktor ate t ) Ġ- ĠThe ĠNor we g ian ĠLab our Ġand ĠW elf are ĠAdmin istration ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorganization Url . set (" https :// www . nav . no ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsc m Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . set (" scm : git : git :// github . com / nav ik t /${ root Project . name }. git ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Connection . set (" scm : git : ssh :// github . com / nav ik t /${ root Project . name }. git ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . set (" https :// github . com / nav ik t /${ root Project . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġmaven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" GitHub Packages " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġuri (" https :// maven . pkg . github . com / nav ik t /${ root Project . name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcredentials Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= ĠSystem . getenv (" GITHUB _ ACT OR ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= ĠSystem . getenv (" GITHUB _ TOKEN ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ ext [" signing . gn upg . key Name "] Ġ= ĠSystem . getenv (" G PG _ KEY _ NAME ") Ċ ext [" signing . gn upg . pass phrase "] Ġ= ĠSystem . getenv (" G PG _ PAS SP HR ASE ") Ċ ext [" signing . gn upg . executable "] Ġ= Ġ" gpg " Ċ Ċ signing Ġ{ ĊĠĠĠ Ġuse G pg Cmd () ĊĠĠĠ Ġsign ( publishing . publications [" maven Java "]) Ċ } Ċ Ċ tasks . javadoc Ġ{ ĊĠĠĠ Ġif Ġ( Java Version . current (). is Java 9 Compatible ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( options Ġas ĠStandard Javadoc Doc let Options ). add Boolean Option (" html 5 ", Ġtrue ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ j ib Ġ{ ĊĠĠĠ Ġfrom Ġ{ ĊĠĠĠĠĠĠĠ Ġimage Ġ= Ġ" gcr . io / dist ro less / java : 1 1 " ĊĠĠĠ Ġ} ĊĠĠĠ Ġcontainer Ġ{ ĊĠĠĠĠĠĠĠ Ġports Ġ= ĠlistOf (" 8 0 8 0 ") ĊĠĠĠĠĠĠĠ Ġmain Class Ġ= Ġmain Class Kt ĊĠĠĠ Ġ} Ċ } Ċ Ċ ( components [" java "] Ġas ĠAd hoc Component With Variants ). with Variants From Configuration ( configurations [" shadow Runtime Elements "]) Ġ{ ĊĠĠĠ Ġskip () Ċ } Ċ Ċ 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 () Ċ } Ċ Ċ tasks . named (" dependency Updates ", ĠDependency Updates Task :: class . java ). configure Ġ{ ĊĠĠĠ Ġthis . resolution Strategy Ġ{ ĊĠĠĠĠĠĠĠ Ġcomponent Selection Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Non Stable ( candidate . version )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreject (" Release Ġcandidate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks . named (" use Latest Versions ", Ġse . pat ri ker des . Use Latest Versions Task :: class . java ). configure Ġ{ ĊĠĠĠ Ġupdate Black list Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" io . code arte : nexus - staging " ĊĠĠĠ Ġ) Ċ } Ċ Ċ build script Ġ{ ĊĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigurations . classpath . get (). exclude (" xer ces ", Ġ" xer ces Impl ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks Ġ{ ĊĠĠĠ Ġwith Type < org . j mail en . gradle . kot linter . tasks . Lint Task > Ġ{ ĊĠĠĠĠĠĠĠ Ġdepends On (" format Kotlin ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < com . github . jen gel man . gradle . plugins . shadow . tasks . Shadow Jar > Ġ{ ĊĠĠĠĠĠĠĠ Ġarchive Base Name . set (" app ") ĊĠĠĠĠĠĠĠ Ġarchive Classifier . set ("") ĊĠĠĠĠĠĠĠ Ġmanifest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Main - Class " Ġto Ġmain Class Kt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < org . jetbrains . kotlin . gradle . tasks . Kotlin Compile > Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj vm Target Ġ= Ġ" 1 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < Test > Ġ{ ĊĠĠĠĠĠĠĠ Ġuse JUnit Platform () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" j ib Docker Build " Ġ{ ĊĠĠĠĠĠĠĠ Ġdepends On (" shadow Jar ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" publish " Ġ{ ĊĠĠĠĠĠĠĠ Ġdepends On (" initialize Son atype Staging Repository ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" publish ToS on atype " Ġ{ ĊĠĠĠĠĠĠĠ Ġdepends On (" publish ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < Sign >(). configure Each Ġ{ ĊĠĠĠĠĠĠĠ Ġonly If Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . getenv (" G PG _ KEYS ") Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < Wrapper > Ġ{ ĊĠĠĠĠĠĠĠ Ġgradle Version Ġ= Ġ" 7 . 3 . 3 " ĊĠĠĠ Ġ} Ċ } Ċ