/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 - present ĠHive MQ Ġand Ġthe ĠHive MQ ĠCommunity Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . h iv emq . extension . gradle Ċ Ċ import Ġcom . github . jen gel man . gradle . plugins . shadow . tasks . Shadow Jar Ċ import Ġorg . gradle . api . Java Version Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . Artifact Repository Container Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . file . Regular File Ċ import Ġorg . gradle . api . plugins . Java Base Plugin Ċ import Ġorg . gradle . api . plugins . Java Plugin Ċ import Ġorg . gradle . api . plugins . Java Plugin Extension Ċ import Ġorg . gradle . api . provider . Provider Ċ import Ġorg . gradle . api . tasks . Copy Ċ import Ġorg . gradle . api . tasks . Source Set Ċ import Ġorg . gradle . api . tasks . Source Set Container Ċ import Ġorg . gradle . api . tasks . Task Provider Ċ import Ġorg . gradle . api . tasks . testing . Test Ċ import Ġorg . gradle . jvm . tasks . Jar Ċ import Ġorg . gradle . jvm . toolchain . Java Language Version Ċ import Ġorg . gradle . kotlin . dsl .* Ċ import Ġorg . gradle . util . Gradle Version Ċ Ċ /** Ċ Ġ* Ġ@ author ĠL uk as ĠBrand , ĠSil vio ĠG i eb l Ċ Ġ*/ Ċ class ĠH iv emq Extension Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEXT ENSION _ NAME : ĠString Ġ= Ġ" h iv emq Extension " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠGROUP _ NAME : ĠString Ġ= Ġ" h iv emq Ġextension " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBUILD _ FOLDER _ NAME : ĠString Ġ= Ġ" h iv emq - extension " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTASK _ PREFIX : ĠString Ġ= Ġ" h iv emq Extension " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠJ AR _ SUFFIX : ĠString Ġ= Ġ" jar " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠZIP _ SUFFIX : ĠString Ġ= Ġ" zip " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSERVICE _ DESCRIPTOR _ SUFFIX : ĠString Ġ= Ġ" service Descriptor " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠXML _ SUFFIX : ĠString Ġ= Ġ" xml " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROVIDED _ CONFIGURATION _ NAME : ĠString Ġ= Ġ" h iv emq Provided " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPRE PARE _ H IVE MQ _ HOME _ TASK _ NAME : ĠString Ġ= Ġ" prepare H iv emq Home " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRUN _ H IVE MQ _ WITH _ EXTENSION _ TASK _ NAME : ĠString Ġ= Ġ" run H iv emq With Extension " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠH IVE MQ _ HOME _ FOLDER _ NAME : ĠString Ġ= Ġ" h iv emq - home " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠIN TEGR ATION _ TEST _ SOURCE _ SET _ NAME Ġ= Ġ" integration Test " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠIN TEGR ATION _ TEST _ TASK _ NAME Ġ= Ġ" integration Test " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPRE PARE _ H IVE MQ _ EXTENSION _ TEST _ TASK _ NAME Ġ= Ġ" prepare H iv emq Extension Test " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠH IVE MQ _ EXTENSION _ TEST _ FOLDER _ NAME Ġ= Ġ" h iv emq - extension - test " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigure Java ( project ) ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġcreate Extension ( project ) ĊĠĠĠĠĠĠĠ Ġadd Dependencies ( project , Ġextension ) ĊĠĠĠĠĠĠĠ Ġval Ġjar Task Ġ= Ġregister Jar Task ( project , Ġextension ) ĊĠĠĠĠĠĠĠ Ġregister Xml Task ( project , Ġextension ) ĊĠĠĠĠĠĠĠ Ġval Ġzip Task Ġ= Ġregister Zip Task ( project , Ġextension , Ġjar Task . flatMap Ġ{ Ġit . archive File Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsetup Debugging ( project , Ġzip Task . flatMap Ġ{ Ġit . archive File Ġ}) ĊĠĠĠĠĠĠĠ Ġsetup Integration Testing ( project , Ġzip Task . flatMap Ġ{ Ġit . archive File Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure Java ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . plugins . apply ( Java Plugin :: class ) ĊĊĠĠĠĠĠĠĠ Ġproject . extensions . configure < Java Plugin Extension > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Gradle Version . current () Ġ>= ĠGradle Version . version (" 6 . 7 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolchain . language Version . set ( Java Language Version . of ( 1 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Compatibility Ġ= ĠJava Version . VERSION _ 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Compatibility Ġ= ĠJava Version . VERSION _ 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Extension ( project : ĠProject ): ĠH iv emq Extension Extension Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproject . extensions . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH iv emq Extension Extension :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEXT ENSION _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH iv emq Extension Extension Impl :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġproject . copy Spec () Ġ} ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Class . convention ( project . memo izing Provider Ġ{ Ġfind Main Class ( project ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Configuration ( project : ĠProject ): ĠConfiguration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprovided Configuration Ġ= Ġproject . configurations . create ( PROVIDED _ CONFIGURATION _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Can Be Resolved Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Can Be Cons umed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproject . configurations . named ( Java Plugin . IMPLEMENT ATION _ CONFIGURATION _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextends From ( provided Configuration ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġprovided Configuration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Repositories ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( project . repositories . find ByName ( Artifact Repository Container . DEFAULT _ MA VEN _ C ENTR AL _ REPO _ NAME ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . repositories . maven Central () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Dependencies ( project : ĠProject , Ġextension : ĠH iv emq Extension Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Configuration ( project ). with Dependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( project . dependencies . create (" com . h iv emq : h iv emq - extension - sdk :${ extension . sdk Version . get ()} ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Repositories ( project ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Jar Task ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġextension : ĠH iv emq Extension Extension , ĊĠĠĠĠĠĠĠ Ġclassifier : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ): ĠTask Provider < Shadow Jar > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Descriptor Task Ġ= Ġregister Service Descriptor Task ( project , Ġextension ) ĊĠĠĠĠĠĠĠ Ġproject . tasks . named < Copy >( Java Plugin . PROCESS _ RESOURCES _ TASK _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( service Descriptor Task ) Ġ{ Ġinto (" META - INF / services ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġproject . tasks . register < Shadow Jar >( TASK _ PREFIX Ġ+ Ġclassifier . capitalize () Ġ+ ĠJ AR _ SUFFIX . capitalize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" As semb les Ġthe Ġ${ if Ġ( classifier . isEmpty ()) Ġ"" Ġelse Ġ"$ classifier Ġ"} jar Ġof Ġthe ĠHive MQ Ġextension ." ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġarchive Classifier . set ( classifier ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Directory . set ( project . layout . build Directory . dir ( BUILD _ FOLDER _ NAME )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanifest . inherit From ( project . tasks . named < Jar >( Java Plugin . JAR _ TASK _ NAME ). get (). manifest ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( project . the < Source Set Container >() [ Source Set . MAIN _ SOURCE _ SET _ NAME ]. output ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigurations Ġ= ĠlistOf ( project . configurations [ Java Plugin . RUNTIME _ CLAS SPATH _ CONFIGURATION _ NAME ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprovided Configuration Ġ= Ġproject . configurations [ PROVIDED _ CONFIGURATION _ NAME ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( component Ġin Ġprovided Configuration . incoming . resolution Result . all Components ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcomponent . module Version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependency Filter . exclude ( dependency Filter . dependency ("${ id . group }:${ id . name } ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexclude ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" META - INF / INDEX . LIST ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" META - INF /*. SF ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" META - INF /*. D SA ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" META - INF /*. RSA ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" module - info . class " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Service Descriptor Task ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġextension : ĠH iv emq Extension Extension ĊĠĠĠ Ġ): ĠTask Provider < H iv emq Extension Service Descriptor > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġproject . tasks . register < H iv emq Extension Service Descriptor >( TASK _ PREFIX Ġ+ ĠSERVICE _ DESCRIPTOR _ SUFFIX . capitalize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Gener ates Ġthe Ġservice Ġdescriptor Ġof Ġthe ĠHive MQ Ġextension ." ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Class . set ( extension . main Class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Directory . set ( project . layout . build Directory . dir ( BUILD _ FOLDER _ NAME )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Main Class ( project : ĠProject ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= ĠRegex ("[ Ġ, :] Extension Main [ Ġ, { ]") ĊĠĠĠĠĠĠĠ Ġvar Ġmain Class : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġproject . the < Source Set Container >() [ Source Set . MAIN _ SOURCE _ SET _ NAME ]. all Source . visit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isDirectory Ġ&& Ġ( file . name . endsWith (". java ") Ġ|| Ġfile . name . endsWith (". kt ")) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . read Text (). contains ( regex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Class Ġ= Ġrelative Path . path String . substring Before Last ('. '). replace ('/', Ġ'.') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Visit ing () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmain Class ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Xml Task ( project : ĠProject , Ġextension : ĠH iv emq Extension Extension ): ĠTask Provider < H iv emq Extension Xml > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproject . tasks . register < H iv emq Extension Xml >( TASK _ PREFIX Ġ+ ĠXML _ SUFFIX . capitalize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Gener ates Ġthe Ġxml Ġdescriptor Ġof Ġthe ĠHive MQ Ġextension ." ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . set ( extension . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor . set ( extension . author ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpriority . set ( extension . priority ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Priority . set ( extension . start Priority ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Directory . set ( project . layout . build Directory . dir ( BUILD _ FOLDER _ NAME )) ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension . resources . from ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Zip Task ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġextension : ĠH iv emq Extension Extension , ĊĠĠĠĠĠĠĠ Ġjar Provider : ĠProvider < Regular File >, ĊĠĠĠĠĠĠĠ Ġclassifier : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ): ĠTask Provider < H iv emq Extension Zip > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġproject . tasks . register < H iv emq Extension Zip >( TASK _ PREFIX Ġ+ Ġclassifier . capitalize () Ġ+ ĠZIP _ SUFFIX . capitalize ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" As semb les Ġthe Ġzip Ġdistribution Ġof Ġthe ĠHive MQ Ġextension ${ if Ġ( classifier . isEmpty ()) Ġ"" Ġelse Ġ" Ġcontaining Ġthe Ġ$ classifier Ġjar "} ." ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġjar . set ( jar Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( extension . resources ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Directory . set ( project . layout . build Directory . dir ( BUILD _ FOLDER _ NAME )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarchive Classifier . set ( classifier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Debugging ( project : ĠProject , Ġzip Provider : ĠProvider < Regular File >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprepare H iv emq Home Task Ġ= Ġproject . tasks . register < Prepare H iv emq Home >( PRE PARE _ H IVE MQ _ HOME _ TASK _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Pre pa res Ġa ĠHive MQ Ġhome Ġdirectory Ġwith Ġthe ĠHive MQ Ġextension Ġfor Ġdebugging Ġvia Ġ$ RUN _ H IVE MQ _ WITH _ EXTENSION _ TASK _ NAME ." ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġh iv emq Extension Zip . set ( zip Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinto ( project . layout . build Directory . dir ( H IVE MQ _ HOME _ FOLDER _ NAME )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . register < Run H iv emq >( RUN _ H IVE MQ _ WITH _ EXTENSION _ TASK _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Runs ĠHive MQ Ġwith Ġthe Ġextension Ġfor Ġdebugging ." ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġh iv emq Home Directory . set ( project . layout . dir ( prepare H iv emq Home Task . map Ġ{ Ġit . destination Dir Ġ})) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Integration Testing ( project : ĠProject , Ġzip Provider : ĠProvider < Regular File >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Sets Ġ= Ġproject . the < Source Set Container >() ĊĠĠĠĠĠĠĠ Ġval Ġmain Source Set Ġ= Ġsource Sets [ Source Set . MAIN _ SOURCE _ SET _ NAME ] ĊĠĠĠĠĠĠĠ Ġval Ġtest Source Set Ġ= Ġsource Sets [ Source Set . TEST _ SOURCE _ SET _ NAME ] ĊĠĠĠĠĠĠĠ Ġval Ġintegration Test Source Set Ġ= Ġsource Sets . create ( INTEGR ATION _ TEST _ SOURCE _ SET _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Classpath Ġ+= Ġmain Source Set . output ĊĠĠĠĠĠĠĠĠĠĠĠ Ġruntime Classpath Ġ+= Ġmain Source Set . output ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . configurations . named ( integration Test Source Set . implementation Configuration Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextends From ( project . configurations [ test Source Set . implementation Configuration Name ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproject . configurations . named ( integration Test Source Set . runtime Only Configuration Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextends From ( project . configurations [ test Source Set . runtime Only Configuration Name ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġprepare Task Ġ= Ġproject . tasks . register < Prepare H iv emq Extension Test >( PRE PARE _ H IVE MQ _ EXTENSION _ TEST _ TASK _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Pre pa res Ġthe ĠHive MQ Ġextension Ġfor Ġintegration Ġtesting ." ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġh iv emq Extension Zip . set ( zip Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinto ( project . layout . build Directory . dir ( H IVE MQ _ EXTENSION _ TEST _ FOLDER _ NAME )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġintegration Test Task Ġ= Ġproject . tasks . register < Test >( INTEGR ATION _ TEST _ TASK _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠJava Base Plugin . VER IFICATION _ GROUP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Runs Ġintegration Ġtests ." ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Classes Dirs Ġ= Ġintegration Test Source Set . output . classes Dirs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath Ġ= Ġintegration Test Source Set . runtime Classpath Ġ+ Ġprepare Task . get (). outputs . files ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Run After ( project . tasks . named ( Java Plugin . TEST _ TASK _ NAME )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . named ( Java Base Plugin . CHECK _ TASK _ NAME ) Ġ{ Ġdepends On ( integration Test Task ) Ġ} ĊĠĠĠ Ġ} Ċ }