/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* Ċ Ġ* ĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "). Ċ Ġ* ĠĠ ĠYou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠ ĠA Ġcopy Ġof Ġthe ĠLicense Ġis Ġlocated Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠ Ġor Ġin Ġthe Ġ" license " Ġfile Ġaccompanying Ġthis Ġfile . ĠThis Ġfile Ġ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 . Ċ Ġ*/ Ċ Ċ import Ġcom . github . jen gel man . gradle . plugins . shadow . tasks . Shadow Jar Ċ Ċ // common Ġfeatures Ġavailable Ġto Ġthe Ġentire Ġproject Ċ // TODO Ġspecify Ġthe Ġversions Ġof ĠByte Bu ddy Ġand ĠAS M Ġin Ġhere , Ġsince Ġthey Ġare Ġused Ġin Ġa Ġfew Ġplaces . Ċ plugins Ġ{ ĊĠĠĠ Ġid (" com . github . john ren gel man . shadow ") Ġversion Ġ" 5 . 1 . 0 " Ġapply Ġfalse ĊĠĠĠ Ġjava ĊĠĠĠ Ġ` maven - publish ` Ċ } Ċ Ċ sub projects Ġ{ ĊĠĠĠ Ġapply < Java Plugin >() ĊĊĠĠĠ Ġversion Ġ= Ġ" 0 . 9 . 1 " ĊĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġmaven Central () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Compile (" org . mockito ", Ġ" mockito - core ", Ġ" 1 .+ ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconfigure < Java Plugin Convention > Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Compatibility Ġ= ĠJava Version . VERSION _ 1 _ 8 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtasks Ġ{ ĊĠĠĠĠĠĠĠ Ġplugin Manager . with Plugin (" com . github . john ren gel man . shadow ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnamed < Shadow Jar >(" shadow Jar ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// suppress Ġthe Ġ"- all " Ġsuffix Ġon Ġthe Ġjar Ġname , Ġsimply Ġreplace Ġthe Ġdefault Ġbuilt Ġjar Ġinstead Ġ( dis co - java - agent - web - plugin - x . y . z . jar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarchive Classifier . set ( null Ġas ĠString ?) ĊĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Must Ġre locate Ġboth Ġof Ġthese Ġinner Ġdependencies Ġof Ġthe ĠDis co Ġagent , Ġto Ġavoid Ġconflicts Ġin Ġyour Ġcustomer 's Ġapplication ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre locate (" org . object web . asm ", Ġ" software . amazon . dis co . agent . jar . asm ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre locate (" net . byte buddy ", Ġ" software . amazon . dis co . agent . jar . byte buddy ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// once Ġgradle Ġhas Ġmade Ġits Ġdefault Ġjar , Ġfollow Ġup Ġby Ġproducing Ġthe Ġshadow / uber Ġjar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassemble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( named < Shadow Jar >(" shadow Jar ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnamed < Shadow Jar >(" shadow Jar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( jar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// we Ġpublish Ġeverything Ġexcept Ġexample Ġsub projects Ġto Ġmaven . ĠProjects Ġwhich Ġdes ire Ġto Ġbe Ġpublished Ġto Ġmaven Ġexpress Ġthe Ġintent ĊĠĠĠ Ġ// via Ġa Ġproperty Ġcalled Ġsimply Ġ' maven ' Ġin Ġtheir Ġgradle . properties Ġfile Ġ( if Ġit Ġexists Ġat Ġall ). ĊĠĠĠ Ġ// Each Ġpackage Ġto Ġbe Ġpublished Ġstill Ġneeds Ġa Ġsmall Ġamount Ġof Ġboilerplate Ġto Ġexpress Ġwhether Ġis Ġis Ġa Ġ' normal ' ĊĠĠĠ Ġ// library Ġwhich Ġexp resses Ġits Ġdependencies , Ġor Ġa Ġshadow ed Ġlibrary Ġwhich Ġincludes Ġand Ġhide s Ġthem . ĠFor Ġa Ġnormal Ġone ĊĠĠĠ Ġ// e . g . ĠCore Ġor ĠWeb , Ġthat Ġboilerplate Ġmay Ġlook Ġlike : ĊĠĠĠ Ġ// Ġconfigure < Publishing Extension > Ġ{ ĊĠĠĠ Ġ// ĠĠĠĠ Ġpublications Ġ{ ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġnamed < Maven Publication >(" maven ") Ġ{ ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( components [" java "]) ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġ} ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġwhereas Ġa Ġshadow ed Ġartifact Ġwould Ġbe Ġdeclared Ġalong Ġthe Ġlines Ġof : ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġconfigure < Publishing Extension > Ġ{ ĊĠĠĠ Ġ// ĠĠĠĠ Ġpublications Ġ{ ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġnamed < Maven Publication >(" maven ") Ġ{ ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact ( tasks . jar . get ()) ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġ} ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// which Ġdecl ares Ġthe Ġjar Ġand Ġthe Ġjar Ġalone Ġas Ġthe Ġartifact , Ġsuppress ing Ġthe Ġdefault Ġbehaviour Ġof Ġgather ing Ġdependency Ġinfo ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// TODO : Ġfind Ġa Ġway Ġto Ġexpress Ġthis Ġjust Ġonce Ġin Ġthe Ġblock Ġbelow , Ġprobably Ġby Ġinspect ing Ġthe Ġexistence Ġor Ġabsence ĊĠĠĠ Ġ// of Ġthe Ġshadow Ġplugin , Ġor Ġthe ĠShadow Jar Ġtask . ĠSo Ġfar Ġattempts Ġto Ġcon solid ate Ġthis Ġlogic Ġhave Ġnot Ġsucceeded , Ġhence ĊĠĠĠ Ġ// the Ġcurrent Ġneed Ġfor Ġthe Ġabove Ġboilerplate . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// TODO : Ġapply Ġsome Ġcontinuous Ġintegration Ġrules Ġto Ġpublish Ġto ĠMaven Ġautomatically Ġwhen Ġe . g . Ġversion Ġnumber Ġincreases ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Publication Ġto Ġlocal ĠMaven Ġis Ġsimply Ġ"./ gradle w Ġpublish To Maven Local " ĊĠĠĠ Ġif Ġ( has Property (" maven ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġapply ( plugin Ġ= Ġ" maven - publish ") ĊĊĠĠĠĠĠĠĠ Ġ// create Ġa Ġtask Ġto Ġpublish Ġour Ġsources ĊĠĠĠĠĠĠĠ Ġtasks . register < Jar >(" sources Jar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( source Sets . main . get (). all Java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarchive Classifier . set (" sources ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// create Ġa Ġtask Ġto Ġpublish Ġjavadoc ĊĠĠĠĠĠĠĠ Ġtasks . register < Jar >(" javadoc Jar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( tasks . javadoc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarchive Classifier . set (" javadoc ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// defer Ġmaven Ġpublish Ġuntil Ġthe Ġassemble Ġtask Ġhas Ġfinished , Ġgiving Ġtime Ġfor Ġshadow Jar Ġto Ġcomplete , Ġif Ġit Ġis Ġpresent ĊĠĠĠĠĠĠĠ Ġtasks . with Type < Abstract Publish To Maven > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( tasks . assemble ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// all Ġour Ġmaven Ġpublications Ġhave Ġsimilar Ġcharacteristics , Ġdeclare Ġas Ġmuch Ġas Ġpossible Ġhere Ġat Ġthe Ġtop Ġlevel ĊĠĠĠĠĠĠĠ Ġconfigure < Publishing Extension > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublications Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate < Maven Publication >(" maven ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact ( tasks [" sources Jar "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact ( tasks [" javadoc Jar "]) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġ" software . amazon . dis co " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpom Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . set ( groupId Ġ+ Ġ":" Ġ+ Ġartifact Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . set (" Amazon ĠDis co Ġaspect Ġorient ed Ġdistributed Ġsystems Ġcompreh ension Ġtoolkit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . set (" https :// github . com / aw sl abs / dis co ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicenses Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . set (" The ĠApache ĠLicense , ĠVersion Ġ 2 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . set (" http :// www . apache . org / licenses / LICENSE - 2 . 0 . txt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevelopers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid . set (" conn ell p ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . set (" Pa ul ĠConn ell ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail . set (" conn ell p @ amazon . com ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsc m Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . set (" scm : git : git :// github . com / aw sl abs / dis co . git ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Connection . set (" scm : git : ssh :// github . com / aw sl abs / dis co . git ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . set (" https :// github . com / aw sl abs / dis co ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ