/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 , ĠTeam Dev . Ġ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 . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand / or Ġbinary Ġforms , Ġwith Ġor Ġwithout Ċ Ġ* Ġmodification , Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice Ġand Ġthe Ġfollowing Ċ Ġ* Ġdisclaimer . Ċ Ġ* Ċ Ġ* ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ċ Ġ* Ġ" AS ĠIS " ĠAND ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT Ċ Ġ* ĠLIMITED ĠTO , ĠTHE ĠIMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR Ċ Ġ* ĠA ĠPARTICULAR ĠPURPOSE ĠARE ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT Ċ Ġ* ĠOWNER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , Ċ Ġ* ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT Ċ Ġ* ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; ĠLOSS ĠOF ĠUSE , Ċ Ġ* ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON ĠANY Ċ Ġ* ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ċ Ġ* Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE Ċ Ġ* ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ*/ Ċ Ċ package Ġio . sp ine . internal . gradle . publish Ċ Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . Task Ċ import Ġorg . gradle . api . artifacts . Publish Artifact Ċ import Ġorg . gradle . api . artifacts . Publish Artifact Set Ċ import Ġorg . gradle . api . publish . Publishing Extension Ċ Ċ /** Ċ Ġ* ĠThis Ġplugin Ġallows Ġpublishing Ġartifacts Ġto Ġremote ĠMaven Ġrepositories . Ċ Ġ* Ċ Ġ* ĠThe Ġplugin Ġcan Ġbe Ġused Ġwith Ġsingle - Ġand Ġmulti - module Ġprojects . Ċ Ġ* Ċ Ġ* ĠWhen Ġapplied Ġto Ġa Ġsingle - module Ġproject , Ġthe Ġreference Ġto Ġthe Ġproject Ġis Ġpassed Ġto Ġthe Ġplugin : Ċ Ġ* Ġ``` Ċ Ġ* Ġimport Ġio . sp ine . gradle . internal . Publishing Repos Ċ Ġ* Ġimport Ġio . sp ine . gradle . internal . sp ine Publishing Ċ Ġ* Ċ Ġ* Ġsp ine Publishing Ġ{ Ċ Ġ* ĠĠĠĠ Ġpublish ( project ) Ċ Ġ* ĠĠĠĠ Ġtarget Repositories . addAll ( Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠPublish ing Repos . cloud Repo , Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠPublish ing Repos . git Hub (" Library Name ") Ċ Ġ* ĠĠĠĠ Ġ) Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* ĠWhen Ġapplied Ġto Ġa Ġmulti - module Ġproject , Ġthe Ġplugin Ġshould Ġbe Ġapplied Ġto Ġthe Ġroot Ġproject . Ċ Ġ* ĠThe Ġsub - projects Ġto Ġbe Ġpublished Ġare Ġspecified Ġby Ġtheir Ġnames : Ċ Ġ* Ġ``` Ċ Ġ* Ġimport Ġio . sp ine . gradle . internal . Publishing Repos Ċ Ġ* Ġimport Ġio . sp ine . gradle . internal . sp ine Publishing Ċ Ġ* Ċ Ġ* Ġsp ine Publishing Ġ{ Ċ Ġ* ĠĠĠĠ Ġprojects To Publish . addAll ( Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ" sub module 1 ", Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ" sub module 2 ", Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ" nested : sub module 3 " Ċ Ġ* ĠĠĠĠ Ġ) Ċ Ġ* ĠĠĠĠ Ġtarget Repositories . addAll ( Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠPublish ing Repos . cloud Repo , Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠPublish ing Repos . git Hub (" Library Name ") Ċ Ġ* ĠĠĠĠ Ġ) Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠBy Ġdefault , Ġwe Ġpublish Ġartifacts Ġproduced Ġby Ġtasks Ġ` source Jar `, Ġ` test Output Jar `, Ċ Ġ* Ġand Ġ` javadoc Jar `, Ġalong Ġwith Ġthe Ġdefault Ġproject Ġcompilation Ġoutput . ĠIf Ġany Ġof Ġthese Ġtasks Ġis Ġnot Ċ Ġ* Ġdeclared , Ġit 's Ġcreated Ġwith Ġsensible Ġdefault Ġsettings Ġby Ġthe Ġplugin . Ċ Ġ* Ċ Ġ* ĠTo Ġpublish Ġmore Ġartifacts Ġfor Ġa Ġcertain Ġproject , Ġadd Ġthem Ġto Ġthe Ġarch ives Ġconfiguration : Ċ Ġ* Ġ``` Ċ Ġ* Ġartifacts Ġ{ Ċ Ġ* ĠĠĠĠ Ġarch ives ( my Custom Jar Task ) Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* ĠIf Ġany Ġplugins Ġapplied Ġto Ġthe Ġpublished Ġproject Ġdeclare Ġany Ġother Ġartifacts , Ġthose Ġartifacts Ċ Ġ* Ġare Ġpublished Ġas Ġwell . Ċ Ġ*/ Ċ class ĠPublish Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġtask Name Ġ= Ġ" publish " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġextension Name Ġ= Ġ" sp ine Publishing " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= ĠPublish Extension . create ( project ) ĊĠĠĠĠĠĠĠ Ġproject . extensions . add ( Publish Extension :: class . java , Ġextension Name , Ġextension ) ĊĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolo Mode Ġ= Ġextension . single Project () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Publish : ĠTask ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( solo Mode ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġproject . create Publish Task () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Credentials : ĠTask Ġ= Ġproject . create Check Task ( extension ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( solo Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . apply Maven Publish ( extension , Ġnull , Ġcheck Credentials ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextension . projects To Publish ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġproject . project ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġit . apply Maven Publish ( extension , Ġroot Publish , Ġcheck Credentials ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ