package Ġorg . nixos . gradle 2 nix Ċ Ċ import Ġorg . apache . ivy . I vy Ċ import Ġorg . apache . ivy . core . settings . I vy Settings Ċ import Ġorg . apache . ivy . plugins . parser . m 2 . P om Reader Ċ import Ġorg . apache . ivy . plugins . parser . xml . Xml Module Descriptor Parser Ċ import Ġorg . apache . ivy . plugins . repository . url . URL Resource Ċ import Ġorg . apache . ivy . plugins . resolver . Chain Resolver Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . artifacts . Module Identifier Ċ import Ġorg . gradle . api . artifacts . Resolved Artifact Ċ import Ġorg . gradle . api . artifacts . component . Component Artifact Identifier Ċ import Ġorg . gradle . api . artifacts . component . Module Component Identifier Ċ import Ġorg . gradle . api . artifacts . dsl . Dependency Handler Ċ import Ġorg . gradle . api . artifacts . dsl . Repository Handler Ċ import Ġorg . gradle . api . artifacts . query . Artifact Resolution Query Ċ import Ġorg . gradle . api . artifacts . result . Resolved Artifact Result Ċ import Ġorg . gradle . api . internal . artifacts . repositories . Resolution Aware Repository Ċ import Ġorg . gradle . ivy . I vy Descriptor Artifact Ċ import Ġorg . gradle . ivy . I vy Module Ċ import Ġorg . gradle . kotlin . dsl . get Artifacts Ċ import Ġorg . gradle . kotlin . dsl . with Artifacts Ċ import Ġorg . gradle . maven . Maven Module Ċ import Ġorg . gradle . maven . Maven P om Artifact Ċ import Ġorg . gradle . util . Gradle Version Ċ Ċ enum Ġclass ĠConfiguration Scope Ġ{ ĊĠĠĠ ĠBUILD SCRIPT , ĊĠĠĠ ĠP LU GIN , ĊĠĠĠ ĠPROJECT , ĊĠĠĠ ĠSET T INGS Ċ } Ċ Ċ internal Ġclass ĠConfiguration Resolver Factory ( ĊĠĠĠ Ġproject : ĠProject , ĊĠĠĠ Ġscope : ĠConfiguration Scope , ĊĠĠĠ Ġrepositories : ĠList < Resolution Aware Repository > Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġiv y Settings Ġ= ĠI vy Settings (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Init () ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġdoesn 't Ġappear Ġto Ġbe Ġused , Ġbut Ġit 's Ġbetter Ġto Ġdefine Ġit Ġexplicitly Ġthan Ġto Ġintroduce ĊĠĠĠĠĠĠĠ Ġ// Ġimp ur ities Ġinto Ġartifact Ġresolution . ĊĠĠĠĠĠĠĠ ĠsetDefault Repository Cache Base dir ( project . build Dir . resolve (" tmp / gradle 2 nix /_ cache "). absolute Path ) ĊĠĠĠĠĠĠĠ Ġset Dict ator Resolver ( Chain Resolver (). also Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain . settings Ġ= Ġthis @ apply ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( resolver Ġin Ġresolver s ) Ġchain . add ( resolver ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġresolver s Ġ= Ġrepositories ĊĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . create Resolver (). is Local Ġ} ĊĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . repository Resolver ( project , Ġscope , Ġiv y Settings ) Ġ} ĊĊĠĠĠ Ġfun Ġcreate ( dependencies : ĠDependency Handler ): ĠConfiguration Resolver Ġ= ĊĠĠĠĠĠĠĠ ĠConfiguration Resolver ( ivy Settings , Ġresolver s , Ġdependencies ) Ċ } Ċ Ċ internal Ġclass ĠConfiguration Resolver ( ĊĠĠĠ Ġiv y Settings : ĠI vy Settings , ĊĠĠĠ Ġprivate Ġval Ġresolver s : ĠList < Repository Resolver >, ĊĠĠĠ Ġprivate Ġval Ġdependencies : ĠDependency Handler Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfailed Ġ= Ġmutable Set Of < Artifact Identifier >() ĊĠĠĠ Ġprivate Ġval Ġiv y Ġ= ĠI vy . newInstance ( ivy Settings ) ĊĊĠĠĠ Ġval Ġun resolved : ĠList < Artifact Identifier > Ġ= Ġfailed . toList () ĊĊĠĠĠ Ġfun Ġresolve ( configuration : ĠConfiguration ): ĠList < Default Artifact > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresolved Ġ= Ġconfiguration . resolved Configuration . len ient Configuration ĊĊĠĠĠĠĠĠĠ Ġfailed . addAll ( resolved . un resolved Module Dependencies . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Artifact Identifier ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġit . selector . group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . selector . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġit . selector . version Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" module " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġtop Level Metadata Ġ= Ġresolved . all Module Dependencies ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġresolve Metadata ( it . module Group , Ġit . moduleName , Ġit . module Version ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct () ĊĊĠĠĠĠĠĠĠ Ġval Ġall Artifacts Ġ= Ġresolved . artifacts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . id . component Identifier Ġis ĠModule Component Identifier Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap (:: resolve ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ( top Level Metadata Ġ+ Ġall Artifacts ). filter Ġ{ Ġit . urls . isNotEmpty () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġartifact Cache Ġ= Ġmutable Map Of < Resolved Artifact , ĠList < Default Artifact >>() ĊĊĠĠĠ Ġprivate Ġfun Ġresolve ( resolved Artifact : ĠResolved Artifact ): ĠList < Default Artifact > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġartifact Cache . compute If Absent ( resolved Artifact ) Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponent Id Ġ= Ġresolved Artifact . id . component Identifier Ġas ĠModule Component Identifier ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartifact Id Ġ= ĠDefault Artifact Identifier ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġcomponent Id . group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcomponent Id . module , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġcomponent Id . version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġresolved Artifact . type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextension Ġ= Ġresolved Artifact . extension , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassifier Ġ= Ġresolved Artifact . classifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsha 2 5 6 Ġ= Ġresolved Artifact . compute Hash () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartifacts Ġ= Ġresolver s . map NotNull Ġ{ Ġit . resolve ( artifactId , Ġsha 2 5 6 ) Ġ}. merge () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( artifacts . isEmpty ()) Ġfailed . add ( artifactId ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġartifacts Ġ+ Ġcomponent Id . run Ġ{ Ġresolve Metadata ( group , Ġmodule , Ġversion ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠMetadata Key ( val Ġgroup : ĠString , Ġval Ġname : ĠString , Ġval Ġversion : ĠString ) ĊĠĠĠ Ġprivate Ġval Ġmetadata Cache Ġ= Ġmutable Map Of < Metadata Key , ĠList < Default Artifact >>() ĊĊĠĠĠ Ġprivate Ġfun Ġresolve Metadata ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠString , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġversion : ĠString ĊĠĠĠ Ġ): ĠList < Default Artifact > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmetadata Cache . compute If Absent ( Metadata Key ( group Ġ= Ġgroup , Ġname Ġ= Ġname , Ġversion Ġ= Ġversion )) Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve P oms ( group , Ġname , Ġversion ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Descriptors ( group , Ġname , Ġversion ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Gradle Metadata ( group , Ġname , Ġversion ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve P oms ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠString , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġversion : ĠString ĊĠĠĠ Ġ): ĠList < Default Artifact > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdependencies . create Artifact Resolution Query () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Module Compat ( group , Ġname , Ġversion ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Artifacts ( Maven Module :: class , ĠMaven P om Artifact :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolved Components ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . get Artifacts ( Maven P om Artifact :: class ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Resolved Artifact Result >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . with Parent P oms () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġresolved P om Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponent Id Ġ= Ġresolved P om . id . component Identifier Ġas ĠModule Component Identifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartifact Id Ġ= ĠDefault Artifact Identifier ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġcomponent Id . group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcomponent Id . module , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġcomponent Id . version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" pom " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInt ention ally Ġnot Ġcomputing Ġhash Ġfrom Ġthe Ġcached Ġresult ; Ġsee ĠResolved Artifact . compute Hash () Ġbelow . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartifacts Ġ= Ġresolver s . map NotNull Ġ{ Ġit . resolve ( artifactId ) Ġ}. merge () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( artifacts . isEmpty ()) Ġfailed . add ( artifactId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifacts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve Descriptors ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠString , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġversion : ĠString ĊĠĠĠ Ġ): ĠList < Default Artifact > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdependencies . create Artifact Resolution Query () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Module Compat ( group , Ġname , Ġversion ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Artifacts ( I vy Module :: class , ĠI vy Descriptor Artifact :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolved Components ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . get Artifacts ( I vy Descriptor Artifact :: class ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Resolved Artifact Result >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . with Parent Descriptors () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġresolved Desc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponent Id Ġ= Ġresolved Desc . id . component Identifier Ġas ĠModule Component Identifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartifact Id Ġ= ĠDefault Artifact Identifier ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġcomponent Id . group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcomponent Id . module , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġcomponent Id . version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" ivy ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextension Ġ= Ġ" xml " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInt ention ally Ġnot Ġcomputing Ġhash Ġfrom Ġthe Ġcached Ġresult ; Ġsee ĠResolved Artifact . compute Hash () Ġbelow . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartifacts Ġ= Ġresolver s . map NotNull Ġ{ Ġit . resolve ( artifactId ) Ġ}. merge () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( artifacts . isEmpty ()) Ġfailed . add ( artifactId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifacts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve Gradle Metadata ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠString , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġversion : ĠString ĊĠĠĠ Ġ): ĠList < Default Artifact > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġartifact Id Ġ= ĠDefault Artifact Identifier ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġgroup , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġversion , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" module " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġartifacts Ġ= Ġresolver s . map NotNull Ġ{ Ġit . resolve ( artifactId ) Ġ}. merge () ĊĠĠĠĠĠĠĠ Ġif Ġ( artifacts . isEmpty ()) Ġfailed . add ( artifactId ) ĊĠĠĠĠĠĠĠ Ġreturn Ġartifacts ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠResolved Artifact Result . parent P om (): ĠResolved Artifact Result ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= ĠURL Resource ( file . to URI (). to URL ()) ĊĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠP om Reader ( resource . url , Ġresource ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( reader . has Parent ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies . create Artifact Resolution Query () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Module Compat ( reader . parent GroupId , Ġreader . parent Artifact Id , Ġreader . parent Version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Artifacts ( Maven Module :: class , ĠMaven P om Artifact :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolved Components ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . get Artifacts ( Maven P om Artifact :: class ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Resolved Artifact Result >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠResolved Artifact Result . with Parent P oms (): ĠList < Resolved Artifact Result > Ġ= ĊĠĠĠĠĠĠĠ Ġgenerate Sequence ( this ) Ġ{ Ġit . parent P om () Ġ}. toList () ĊĊĠĠĠ Ġprivate Ġfun ĠResolved Artifact Result . parent Descriptors ( seen : ĠSet < Component Artifact Identifier >): ĠList < Resolved Artifact Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġfile . to URI (). to URL () ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠXml Module Descriptor Parser . getInstance () ĊĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġparser . parse Descriptor ( ivy . settings , Ġurl , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdescriptor . inherited Descriptors . map NotNull Ġ{ Ġdesc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies . create Artifact Resolution Query () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Module Compat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc . parent Revision Id . organisation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc . parent Revision Id . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc . parent Revision Id . revision ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Artifacts ( I vy Module :: class , ĠI vy Descriptor Artifact :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolved Components ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . get Artifacts ( I vy Descriptor Artifact :: class ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Resolved Artifact Result >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () ĊĠĠĠĠĠĠĠ Ġ}. filter Ġ{ Ġit . id Ġ! in Ġseen Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠResolved Artifact Result . with Parent Descriptors (): ĠList < Resolved Artifact Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġseen Ġ= Ġmutable Set Of < Component Artifact Identifier >() ĊĠĠĠĠĠĠĠ Ġreturn Ġgenerate Sequence ( listOf ( this )) Ġ{ Ġdesc s Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparents Ġ= Ġdesc s . flatMap Ġ{ Ġit . parent Descriptors ( seen ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseen . addAll ( parents . map ( Resolved Artifact Result :: getId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparents . take Unless Ġ{ Ġit . isEmpty () Ġ} ĊĠĠĠĠĠĠĠ Ġ}. flatten (). distinct (). toList () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠArtifact Resolution Query . for Module Compat ( ĊĠĠĠ Ġgroup : ĠString , ĊĠĠĠ Ġname : ĠString , ĊĠĠĠ Ġversion : ĠString Ċ ): ĠArtifact Resolution Query Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( Gradle Version . current () Ġ>= ĠGradle Version . version (" 4 . 5 ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Module ( group , Ġname , Ġversion ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Components ( Module Component Id ( group , Ġname , Ġversion )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġdata Ġclass ĠModule Component Id ( ĊĠĠĠ Ġprivate Ġval Ġmodule Id : ĠModule Id , ĊĠĠĠ Ġprivate Ġval Ġversion : ĠString Ċ ) Ġ: ĠModule Component Identifier Ġ{ ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠString , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġversion : ĠString ĊĠĠĠ Ġ) Ġ: Ġthis ( Module Id ( group , Ġname ), Ġversion ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Group (): ĠString Ġ= Ġmodule Id . group ĊĠĠĠ Ġoverride Ġfun Ġget Module (): ĠString Ġ= Ġmodule Id . name ĊĠĠĠ Ġoverride Ġfun Ġget Version (): ĠString Ġ= Ġversion ĊĠĠĠ Ġoverride Ġfun Ġget Module Identifier (): ĠModule Identifier Ġ= Ġmodule Id ĊĠĠĠ Ġoverride Ġfun Ġget DisplayName (): ĠString Ġ= ĊĠĠĠĠĠĠĠ ĠarrayOf ( group , Ġmodule , Ġversion ). join ToString (": ") Ċ } Ċ Ċ private Ġdata Ġclass ĠModule Id ( ĊĠĠĠ Ġprivate Ġval Ġgroup : ĠString , ĊĠĠĠ Ġprivate Ġval Ġname : ĠString Ċ ) Ġ: ĠModule Identifier Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Group (): ĠString Ġ= Ġgroup ĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= Ġname Ċ } Ċ Ċ private Ġfun ĠList < Default Artifact >. merge (): ĠList < Default Artifact > Ġ{ ĊĠĠĠ Ġreturn Ġgrouping By Ġ{ Ġit . id Ġ} ĊĠĠĠĠĠĠĠ Ġ. reduce Ġ{ Ġ_, Ġdest , Ġnext Ġ-> Ġdest . copy ( urls Ġ= Ġdest . urls Ġ+ Ġnext . urls ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. values . toList () Ċ } Ċ Ċ private Ġfun ĠResolved Artifact . compute Hash (): ĠString ? Ġ{ ĊĠĠĠ Ġ// ĠHack : ĠSome ĠPO M Ġfiles Ġare Ġserved Ġwith ĠCRL F Ġline Ġend ings , Ġe . g . Ġjavax . servlet : javax . servlet - api : 3 . 1 . 0 . ĊĠĠĠ Ġ// ĠGradle Ġstores Ġthese Ġnormalized Ġwith ĠL F Ġline Ġend ings , Ġwhich Ġwill Ġnot Ġmatch Ġthe Ġevent ual Ġhash ĊĠĠĠ Ġ// Ġof Ġthe Ġfixed - output Ġder ivation Ġwhich Ġproduces Ġthe ĠPO M Ġartifact . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠA Ġsimilar Ġissue Ġcan Ġexist Ġfor ĠApache ĠI vy ; Ġsee Ġhttps :// issues . apache . org / jira / browse / IV Y - 1 1 5 6 . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠIgnore Ġthese Ġartifacts , Ġand Ġdefer Ġhash Ġcalculation Ġto ĠRepository Resolver . ĊĠĠĠ Ġif Ġ( type Ġ== Ġ" pom " Ġ|| Ġtype Ġ== Ġ" ivy ") Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġfile . sha 2 5 6 () Ċ } Ċ