import Ġedu . wpi . first . wp ilib . version ing . Release Type Ċ import Ġorg . gradle . api . publish . maven . Maven Publication Ċ import Ġorg . gradle . jvm . tasks . Jar Ċ import Ġorg . gradle . testing . jac oco . tasks . J aco co Report Ċ import Ġjava . time . Instant Ċ import Ġcom . github . jen gel man . gradle . plugins . shadow . tasks . Shadow Jar Ċ import Ġcom . github . spot bugs . Spot Bugs Task Ċ Ċ build script Ġ{ ĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġmaven Central () ĊĠĠĠĠĠĠĠ Ġj center () ĊĠĠĠ Ġ} Ċ } Ċ plugins Ġ{ ĊĠĠĠ Ġ` maven - publish ` ĊĠĠĠ Ġj aco co ĊĠĠĠ Ġjava ĊĠĠĠ Ġcheck style ĊĠĠĠ Ġapplication ĊĠĠĠ Ġp md ĊĠĠĠ Ġid (" edu . wpi . first . wp ilib . version ing . W PI Lib Version ing Plugin ") Ġversion Ġ" 2 . 2 " ĊĠĠĠ Ġid (" com . github . john ren gel man . shadow ") Ġversion Ġ" 2 . 0 . 4 " ĊĠĠĠ Ġid (" com . diff plug . gradle . spot less ") Ġversion Ġ" 3 . 1 3 . 0 " ĊĠĠĠ Ġid (" com . github . spot bugs ") Ġversion Ġ" 1 . 6 . 4 " Ċ } Ċ Ċ // ĠEnsure Ġthat Ġthe ĠW PI Lib Version ing Plugin Ġis Ġsetup Ġby Ġsetting Ġthe Ġrelease Ġtype , Ġif Ġrelease Type Ġwasn 't Ċ // Ġalready Ġspecified Ġon Ġthe Ġcommand Ġline Ċ if Ġ(! has Property (" release Type ")) Ġ{ ĊĠĠĠ ĠW PI Lib Version Ġ{ ĊĠĠĠĠĠĠĠ Ġrelease Type Ġ= ĠRelease Type . DEV ĊĠĠĠ Ġ} Ċ } Ċ Ċ version Ġ= Ġget W PI Lib Version () Ċ Ċ val Ġthe Main ClassName Ġ= Ġ" edu . wpi . first . outline viewer . Main " Ċ Ċ tasks . with Type < Jar >(). configure Each Ġ{ ĊĠĠĠ Ġmanifest Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes [" Implementation - Version "] Ġ= Ġproject . version Ġas ĠString ĊĠĠĠĠĠĠĠ Ġattributes [" Built - Date "] Ġ= ĠInstant . now (). toString () ĊĠĠĠĠĠĠĠ Ġattributes [" Main - Class "] Ġ= Ġthe Main ClassName ĊĠĠĠ Ġ} Ċ } Ċ Ċ application Ġ{ ĊĠĠĠ Ġmain ClassName Ġ= Ġthe Main ClassName Ċ } Ċ Ċ repositories Ġ{ ĊĠĠĠ Ġmaven Central () Ċ } Ċ Ċ // ĠSpot less Ġis Ġused Ġto Ġlint Ġand Ġre format Ġsource Ġfiles . Ċ spot less Ġ{ ĊĠĠĠ Ġkotlin Gradle Ġ{ ĊĠĠĠĠĠĠĠ Ġk tl int (" 0 . 2 4 . 0 ") ĊĠĠĠĠĠĠĠ Ġtrim Trailing Whitespace () ĊĠĠĠĠĠĠĠ Ġindent With Spaces () ĊĠĠĠĠĠĠĠ Ġend With New line () ĊĠĠĠ Ġ} ĊĠĠĠ Ġformat (" extr aneous ") Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget (" src /**/*. f xml ", Ġ" src /**/*. css ", Ġ"*. xml ", Ġ"*. yml ", Ġ"*. md ") ĊĠĠĠĠĠĠĠ Ġtrim Trailing Whitespace () ĊĠĠĠĠĠĠĠ Ġindent With Spaces () ĊĠĠĠĠĠĠĠ Ġend With New line () ĊĠĠĠ Ġ} Ċ } Ċ Ċ create Native Configurations () Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġ// ĠJava FX Ġdependencies ĊĠĠĠ Ġjavafx (" base ") ĊĠĠĠ Ġjavafx (" controls ") ĊĠĠĠ Ġjavafx (" f xml ") ĊĠĠĠ Ġjavafx (" graphics ") ĊĊĠĠĠ Ġval Ġnt core Version Ġ= Ġ" 2 0 1 9 . +" ĊĠĠĠ Ġval Ġw pi Util Version Ġ= Ġ" 2 0 1 9 . +" ĊĊĠĠĠ Ġcompile ( group Ġ= Ġ" edu . wpi . first . nt core ", Ġname Ġ= Ġ" nt core - java ", Ġversion Ġ= Ġnt core Version ) ĊĠĠĠ Ġnative ( group Ġ= Ġ" edu . wpi . first . nt core ", Ġname Ġ= Ġ" nt core - jni ", Ġversion Ġ= Ġnt core Version , Ġclassifier Function Ġ= Ġ:: wp ilib Classifier ) ĊĠĠĠ Ġcompile ( group Ġ= Ġ" edu . wpi . first . wpi util ", Ġname Ġ= Ġ" wpi util - java ", Ġversion Ġ= Ġw pi Util Version ) ĊĊĠĠĠ Ġcompile ( group Ġ= Ġ" com . google . gu ava ", Ġname Ġ= Ġ" gu ava ", Ġversion Ġ= Ġ" 2 3 . 0 ") ĊĠĠĠ Ġcompile ( group Ġ= Ġ" org . controls fx ", Ġname Ġ= Ġ" controls fx ", Ġversion Ġ= Ġ" 9 . 0 . 0 ") ĊĊĠĠĠ Ġfun Ġjunit J upiter ( name : ĠString , Ġversion : ĠString Ġ= Ġ" 5 . 2 . 0 ") Ġ= ĊĠĠĠĠĠĠĠ Ġcreate ( group Ġ= Ġ" org . junit . jupiter ", Ġname Ġ= Ġname , Ġversion Ġ= Ġversion ) ĊĠĠĠ Ġfun Ġtest Fx ( name : ĠString , Ġversion : ĠString Ġ= Ġ" 4 . 0 . 1 3 - alpha ") Ġ= ĊĠĠĠĠĠĠĠ Ġcreate ( group Ġ= Ġ" org . test fx ", Ġname Ġ= Ġname , Ġversion Ġ= Ġversion ) ĊĊĠĠĠ Ġtest Implementation ( junit J upiter ( name Ġ= Ġ" junit - jupiter - api ")) ĊĠĠĠ Ġtest Implementation ( junit J upiter ( name Ġ= Ġ" junit - jupiter - engine ")) ĊĠĠĠ Ġtest Implementation ( junit J upiter ( name Ġ= Ġ" junit - jupiter - params ")) ĊĠĠĠ Ġtest Implementation ( group Ġ= Ġ" com . google . gu ava ", Ġname Ġ= Ġ" gu ava - test lib ", Ġversion Ġ= Ġ" 2 3 . 0 ") ĊĠĠĠ Ġtest Implementation ( test Fx ( name Ġ= Ġ" test fx - core ")) ĊĠĠĠ Ġtest Implementation ( test Fx ( name Ġ= Ġ" test fx - junit 5 ")) ĊĊĠĠĠ Ġtest Runtime ( test Fx ( name Ġ= Ġ" openj fx - mon oc le ", Ġversion Ġ= Ġ" jdk - 9 + 1 8 1 ")) ĊĠĠĠ Ġtest Runtime ( group Ġ= Ġ" org . junit . platform ", Ġname Ġ= Ġ" junit - platform - launcher ", Ġversion Ġ= Ġ" 1 . 0 . 0 ") Ċ } Ċ Ċ check style Ġ{ ĊĠĠĠ Ġtool Version Ġ= Ġ" 8 . 1 2 " Ċ } Ċ Ċ pmd Ġ{ ĊĠĠĠ Ġtool Version Ġ= Ġ" 6 . 7 . 0 " ĊĠĠĠ Ġis Console Output Ġ= Ġtrue ĊĠĠĠ Ġsource Sets Ġ= Ġset Of ( java . source Sets [" main "], Ġjava . source Sets [" test "]) ĊĠĠĠ Ġreports Dir Ġ= Ġfile ("${ project . build Dir }/ reports / pmd ") ĊĠĠĠ Ġrule Set Files Ġ= Ġfiles ( file ("$ rootDir / pmd - rule set . xml ")) ĊĠĠĠ Ġrule Sets Ġ= Ġempty List () Ċ } Ċ Ċ tasks . with Type < Java Compile >(). configure Each Ġ{ ĊĠĠĠ Ġ// ĠUTF - 8 Ġcharacters Ġare Ġused Ġin Ġmenus ĊĠĠĠ Ġoptions . encoding Ġ= Ġ" UTF - 8 " Ċ } Ċ Ċ tasks . with Type < Spot Bugs Task >() Ġ{ ĊĠĠĠ Ġreports Ġ{ ĊĠĠĠĠĠĠĠ Ġxml . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġem acs . isEnabled Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġfinal ized By ( task ("${ name } Report ") Ġ{ ĊĠĠĠĠĠĠĠ Ġmust Run After ( this @ with Type ) ĊĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ with Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reports ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. emacs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. destination ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġit . exists () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . read Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġ! it . isNull Or Blank () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġlogger . warn ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ jac oco Ġ{ ĊĠĠĠ Ġtool Version Ġ= Ġ" 0 . 8 . 2 " Ċ } Ċ Ċ tasks . with Type < J aco co Report >(). configure Each Ġ{ ĊĠĠĠ Ġreports Ġ{ ĊĠĠĠĠĠĠĠ Ġxml . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġhtml . isEnabled Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks . with Type < Test >(). configure Each Ġ{ ĊĠĠĠ Ġ// ĠTODO : Ġre - enable Ġwhen ĠTest FX Ġ( or Ġthe Ġunderlying ĠJava FX Ġproblem ) Ġis Ġfixed ĊĠĠĠ Ġprintln (" UI Ġtests Ġwill Ġnot Ġbe Ġrun Ġdue Ġto ĠTest FX Ġbeing Ġbroken Ġwhen Ġhead less Ġon ĠJava Ġ 1 0 .") ĊĠĠĠ Ġprintln (" See : Ġhttps :// github . com / java fx ports / openjdk - j fx / issues / 6 6 ") ĊĠĠĠ Ġ// ĠLink : Ġhttps :// github . com / java fx ports / openjdk - j fx / issues / 6 6 ĊĠĠĠ Ġuse JUnit Platform Ġ{ ĊĠĠĠĠĠĠĠ Ġexclude Tags (" UI ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks . with Type < Javadoc >(). configure Each Ġ{ ĊĠĠĠ Ġis Fail OnError Ġ= Ġfalse Ċ } Ċ Ċ val Ġnative Shadow Tasks Ġ= ĠNative Platforms . values (). map Ġ{ Ġplatform Ġ-> ĊĠĠĠ Ġtasks . create < Shadow Jar >(" shadow Jar -${ platform . platform Name }") Ġ{ ĊĠĠĠĠĠĠĠ Ġclassifier Ġ= Ġplatform . platform Name ĊĠĠĠĠĠĠĠ Ġconfigurations Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . configurations . compile , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . configurations . get ByName ( platform . platform Name ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfrom ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . source Sets [" main "]. output ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks . create (" shadow Jar All Platforms ") Ġ{ ĊĠĠĠ Ġnative Shadow Tasks . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . depends On ( it ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks . with Type < Shadow Jar >(). configure Each Ġ{ ĊĠĠĠ Ġexclude (" module - info . class ") Ċ } Ċ Ċ val Ġsource Jar Ġ= Ġtask < Jar >(" source Jar ") Ġ{ ĊĠĠĠ Ġdescription Ġ= Ġ" Creates Ġa ĠJ AR Ġthat Ġcontains Ġthe Ġsource Ġcode ." ĊĠĠĠ Ġfrom ( java . source Sets [" main "]. all Source ) ĊĠĠĠ Ġclassifier Ġ= Ġ" sources " Ċ } Ċ Ċ val Ġjavadoc Jar Ġ= Ġtask < Jar >(" javadoc Jar ") Ġ{ ĊĠĠĠ Ġdepends On (" javadoc ") ĊĠĠĠ Ġdescription Ġ= Ġ" Creates Ġa ĠJ AR Ġthat Ġcontains Ġthe Ġjavadoc s ." ĊĠĠĠ Ġfrom ( java . docs Dir ) ĊĠĠĠ Ġclassifier Ġ= Ġ" javadoc " Ċ } Ċ Ċ publishing Ġ{ ĊĠĠĠ Ġpublications Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate < Maven Publication >(" app ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġ" edu . wpi . first . wp ilib " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Id Ġ= Ġ" Outline Viewer " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġproject . version Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Shadow Tasks . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassifier Ġ= Ġit . classifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ return Ġpublish Version Ġproperty Ġif Ġexists , Ġotherwise Ċ Ġ* Ġ[ edu . wpi . first . wp ilib . version ing . W PI Lib Version ing Plugin Extension . version ] Ġvalue Ġor Ġfallback Ċ Ġ* Ġif Ġthat Ġvalue Ġis Ġthe Ġempty Ġstring . Ċ Ġ*/ Ċ fun Ġget W PI Lib Version ( fallback : ĠString Ġ= Ġ" 0 . 0 . 0 "): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( project . has Property (" publish Version ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpublish Version : ĠString Ġby Ġproject ĊĠĠĠĠĠĠĠ Ġreturn Ġpublish Version ĊĠĠĠ Ġ} Ġelse Ġif Ġ( W PI Lib Version . version Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠW PI Lib Version . version ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfallback ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks . with Type < Wrapper >(). configure Each Ġ{ ĊĠĠĠ Ġgradle Version Ġ= Ġ" 4 . 9 " Ċ } Ċ