From 48c43a05ed869c464de4a3e19b9154624479d491 Mon Sep 17 00:00:00 2001 From: Geert Bevin Date: Sat, 13 Jul 2024 20:44:45 -0400 Subject: [PATCH] Fixes for dependency override property behavior. --- lib/bld/bld-wrapper.jar | Bin 29543 -> 29578 bytes src/main/java/rife/bld/BaseProject.java | 3 +- .../bld/dependencies/VersionResolution.java | 10 +++++ .../operations/DependencyTreeOperation.java | 37 +++++++++++++++++- src/main/java/rife/bld/wrapper/Wrapper.java | 16 ++++++++ .../bld/wrapper/WrapperExtensionResolver.java | 19 +++++---- 6 files changed, 74 insertions(+), 11 deletions(-) diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar index a47fb34d411e02a1fced4da713dcb55afc012bce..b6de554e2321e646e0f66ba576b0445e0188e138 100644 GIT binary patch delta 14821 zcmY+rV{o8N6E+%W<7{l(HaFUAY}>YR$F^2I_xzZu zo|>9IJ_3z628EZG0*62Y`SIfiNO*BPJOK9J9L)^)z<4V!K7O}9_l#zeA^jV`z<|jV zQWXY82n#_bOM^@l`jO}G8|nuctApu4L7P^p=5sMRrY2|AVg;3mAB|3xW~EM(s+E;h z<)+rUWwok;@3zx+CZ}Bj%*^!n{c`MecW1WORl8ZQ+g@buH4qXe`-n{;DO^aJeI9UV z)yV^lwTgoA^Y{Pui2R%)3G}8gQ8!M|lb;&yI}-9xBWmjDGPoSp_mY+${+N-tb}&<$kxL;0?AWlV&rcxQ^4TVe@FE?l86majTg>TJ=&8JXm|Eyi zh8OB>0%CG?&reYzokNzUGnwmXB3UfB3b}w^Ghxmms>TU<3K-EPVA8W&xZw~Y^(Ut{=552poJ*@JSIGISSd#^#2m1!|bQ!X&es{x@o1>;x2F5lW4xSZ;k$(Vp z>72j>Gd#{z4dp2|Z0@}Da?m2v09(nO=Inf#{upxqlaLa9x=7i&Tb|K^RW^y4xZib@ zc$ZPZq#T-m`ONcshmVaTWp{g4`>X5qsn)O&SHmV6%>}Y)%JN9N$QRHNos}uqG6%Zj zT@mD}_Hs%!oIT%iq?olN+I0SEnJWP3^eDzPmpZKs|8VKm7$<ps(ze-NfkjD45 ztW8lZDTzqQ@XQxzR!A|KHAta#5rjEPSU)~2Hh+o{_opG|7ckcy8d~bNXhT_-dTCY; z=;&a9CiQ1TDHn>#EJShhip;9#RaUYr7&O8&Wp5E)MB!i*qGL4A{1Fznx1t1?SW1>x z@>DgNGM4n0*GT(?=vL+cz5e-mB@Kb>E~X+UI?F;Qe`VOBV*jwb4PPSDs+)OD;dGsB zD^k!cpF|$TAuaHyd7iEKnwW;_O`X*ye;%1N^I3{Bu)wn^Vj*qlu)}dMW;)#vW_?|p za9#c~-QWI9v6L_xXe9*Z`Rc&R6)bnAKo~~&jcfI8ZJJnj6Sf!Po4Aoe^|q?Xtm>NS z+$)BT&^o9%oHrfbRfHuE-3URx8OF(Ce43>qpoox__WDQ?$xtFi#0qDH*-T$;ZLOuc zx}m+Pjx=?90g$x`v?Z%yz={77dSU6PE(E?*SQhJQ% zTrhNMI}yO7=1WRxX9%h;&h|{U&1Yr0E)=>hNzM<#i^bednGOm0aZ|)n!=TK+H*V*@ii+_zd6Ri#ANJc16Vb@kl?&jNfGpa%wqP z!*>lS|5jOu-DkX@^c4F9_T^8qRpD;UmU>(}G7e|{GD_9>X0Oex+ezn)aeZC2ii9ko zvYLR^>~p&vMW+GiQ-ZW7!4pF>@57%WCwkMxL}iLU8o&d%=WG$7<^xK1mcFkWvRkm@ zM00hx*(DP&Kfl}9@swsNQ~QFQN~raK`bPax9HXzsgi)oTc3F0(U~!yTKUSnBoLzLa zh7~5{6ilRgf#3B@!1rULVEGh*4uY%#&N)O|6vTbQxfbVecU1M?VCI8VqOZxU)`OMs zKJ+7}8jfiz`dDI4aO2NMXkY;^Q`YO_+FZbE51dwqhRxYc~}`~Y2+-XD_h zCdb$nnpleDYzF0G-=)%3BB=3TrYoRQM+4pdv`1Asq1$Ls?9){~6%ChzI){DN$FwTGYwJypL zg7>KTgNb7J{LZc85a5gy$P@W^OwUV~EW8Y6s^#Ff<3gM_2;%uAWCzW|!*(}ma7mxd z)%_G^K8-7crjC~%gY0vn+dQMyA4cshpFuFMj0($*ubsG$Nl`^mX%L$1SN*R^H07Uo z8vtdUu8i0~`HA$;b7Kf;5LpWT5No!zrjoP6-^!6LzS3%~b6_@)`VN(ccyYrdoR4_` zg>;pOxPGTwbyjJ57 zkF9$jbHCm;*7VRtu1+*R?T4&iV@F*jDUcu5Lax)yrfc#mH^b0zK*gm3C$I}n!w|(M zfP3gRC5@uwFQHjw!o$|=>Xmt81XY75GpPY63??{%o@F?T!j!Nj7h0fecni_ULBAii6~5x0l_* z%p#7Gi0T+-Sc@~5r!Zs;gUL0qga9Zuq<_<6@FY#Jk+KemX@9Kf99p=bJCJPc$uLZE z-Q&;(X+pef$id*#UG^e`)a+&$*9_QW4k};7;!OU$v*lfTMmi3K_~P&mS@CPuh+3m% zO3#{v+lupXt{M<8NHF=?_n*Ot76_M~VD9!aIpZ;u{PnOW4c;24s9;MxiU$fR?}bJx z^RI?XrL2EyU24l2%{&FiQ2FHRS9yCF(f7Sz4anl;khes_$vDK5Ghn2WDay)nVtKy| z5f4%j^ZvtNGxek?GR8e|NN?LfQ&ZoA+ZzjdB%DD|>ciF}Kv0E59uei<(uI^9Ua6#a zh<+hC8Z@;0Rg+;%Nm|a!hXCkzGa}ftaHM9011Q?_x331UFD3 zqu8Hd!qF;M>@q8>wOV@yB^DUhMqsb+L!>G0%HF7-*o+WyaIHfZ)oJyf1|{y=d z^(0yssP8fkeJI<8>;O9(yHz2&g^QbmZ?XPU`#=c!So)zFf)+s}kL|WC=Z(^yM`V@|R_JFAP_ShU^o%Dh7Na z2lbImNBSNi_3y7pDf5zX>>mb0?YShs)h{zB-?JQxQzQ0EqTbfw z-w|>``;YPVcGDoTzmG}=iKVPVj(nN(`Lb`MqvnnQ`(`;FV+gZ*8bF#NylXC-Lsq(T# zyT07$TN>Owhip=^sjOV#@bdYHh#2!}f6Q+92oxqr|3D-Y%u|P%k!_&E0FqPt>XhyJ zh;AQ_6sk#@dS}+Xo4zCu=NZ&id@!M|-0KDBLr`^XSyrQouU$lL3NlJgMw0`Flk%%F zHj$P%tQKWebq9RhgnVdGeVACge->DFQkj@Nl0b18 zhDoGUS+9>NIRCEF^zw_Kp5;h_#CN^3se;ZWG0Jv4lQI)D+Q7+l} zhy?Y+31;_U%%eYHJRU{88YUBtSvZ~82G{&ZEo=0wMqO*nbRGDnM4bo>cPl>~@t+!P zXD{g5gj z^4jDZ2A}$yyI~wTo|&UjoRg6ALxhs9*#yqfOr^~u95eMxKZE9*_~I^f|J*KmkB9w+ zSJ;#fMy)$q&AY$d^?Y~hD88lS*M_%G7Q*7uSPA5AW3?G~Rw-R-TdDSXcmQmVt6CC1 z%_pc5GOVow@FxHRey?r`F{sa<;}|{7EbBIJD)bIiN`T636)_mjZSTRED6JhuMCSD| zh_kf4fCEqSy7Q&(Q!d3@*>^rER^!g$Rg{FE9g7MX4^f^9cEsC(3?4y^&T?L#lw815Nd1kZshUo%VT6F~D$@8T6n((_A2 zCwt@0pZt50{%->PTJ9dHHzC0u+tp(|`8VxuCDJu~v)iL9#JdCZxUsDynX?P^cv9rO-aDSarn%Bv4g zN+{!AKBlaJx7#zRmr@);_41XTosS@_-jV?|oi3g+d+#nEQ|zchP>RnDJ^WKT1N4Mj zJDO?nw^Z~V2#cE#lKp3j5G7hF#c#mBc-WqYnA5NlrV$A(k@|ZdzET zPMKIw8_N_|Urwte!?=8OjmypM>?F!uUy0s@Z$1ZgQq$ZES(#o;ecB)Yx--L|oFvDV zt$alVjwj8pjQ{pEIHl@dE#ji=$MQ^F>3XBKvTv$`G zK({-3>)10e;ulx*Fj+a!-ZIuYfkb{(BEYtMEXaLTw?-g(LRG~wzPy6IS)Di{%^QAa z=he_5{EwEK*lGsvNT!%BWZC_^)w|A{J*^C6uGKG3Pc9UA4SA`5$7(lY#?)r|%H3j_ zXoHT6%=oLHNF$!Q6liC3QtT{4A>6Rk4r`OrGuGvYmcc$O%Xne7C{2{7+0FKrGr+0@ zqnmr{!AcrYvgU{;Cl|O}y&#?z$|gjJZn>sR^O#~Kde;5v2oJI+Zr19e-h6wDhPCps zdPVeNRP$2J!l>^>F|4{}^^xcdL;GD>IZsy6jZlN}tbFs7;yL#h{v71w9NGoUiBl|J zTD0togCRHkYI__Y}16%r>)lN)2;`nY7T%Oe*tz zm+yryuoYh4Iwcp5-X*>R3ySEh2z$6hUA?nqLq-)|AyxB?#f5tUS9_<%1{k%L7PLH@ zJ>TJDN=;&P73ee4lUK_)qmk07u90lVN@hXz4!9DMyHhtqHV-r!yVtfVXJocB860@> z5znt_T|nT$wA5lavRpQQU6j$^ZCX}nFmLD>LSd}bdf)8l4`}>Bc^V~sahytDd~JBh zP_3=7+R|3ivgQOWb-AZ$0lE_SDM z#KN$VWLH8QW@8^f@Piv2`Sd9wozZ$Aj9<{Hu_RU!G%PHqM@qL*cI(ue6CfyU>x+8? zA;HE>p!hz@Xw`aNqrWchhe@YO1jf&eJ@z99oZvw~@3A}<73U~=0Xsj$U+XTqw)7XA z1bH@L>^kl}bfOX6q{Z}Gog z%v#nfH03pLA{HjFlEOb=iS=ebM8{S}sTrtfd2D(R`!S^Te5O7cBh4llTO)lRY1kHv z7LTQQI^E}<*ky*IhODB7reo7eWq2QPiG)uJPECeNC%Ifa0gYMsUQbj*Cs_>z64K5P zr3R%mO9K5hH#Q>MibR7Sm$v=%#4 z-uR!#cYSqdA1ei6X{hy-OwHyzGB1ieseda7++OURmQLoL=<|zApQ`~OlKcZ84!|V32GgW-gb03BHiSd%C zkbvK*tai#`56GBQCe9guU`Wvh4g@lrn&Z{q$zzUJV9`MM{##F0l*?&*Mp18FzWq04 zO6FsC12g#91~)#niEdeKRi*gFd3Skc6~Wjd2Y!k&2mLKBc1x>GE@z6(57F18;^KP8 zRhED64Z~+c?6jZaCE0PZ+W!U$68Rr)HDuVcqAozWZR$P=E#)n$z<5h^RP*IkOfu_lL0ax#ESYh*)Ig&?iua`^Dlwi<5dIs7>zfo$ z{yH45(|jp>d^0Xi-?TgOS(>2*ika-t-~*L=6Xd%qJO=-+THyxm184U6x3Ow)Jb7`iD-R= z`OghA(No*i$PXmZXDIYO6Od1r?DN-9N$Lp@@zp2e93Bb;joYZ{E6X73i$yVznr9h|NW zEAER~Q>XgHUG8p2iDKP|zOt+@L>_CW-U?w?3(aq9wKZQ>%ehZ3irY%`o&+on0GO!D z(~lzX;T3?U5CqBXsU9EY4XnzUc9}XY>*@O2(;F#@lbgn#+Y>|;*qBF$pFMx{g-4kv z=fD1fl_uhql5D*GLYfnI$G~M4ZnKHs_c?mx z{^;0Aga!`6WNnwdFTriIdfo*MXrsnBra@^hJ$9yC>h}F{GRbtS=LBnejrT7#Tv<2b z6L7l4x$uVPIrP4+#fyQE(Zi^Z?Oj{589g5F82y_9Bf)Jtpt^1*ZL>LbJDS#y6pojE zw5s^|M*^SZ>^H0Xj0oxj;nsJQrSH%2jUrMb8#k7G*N08keVR69Tkqk zg2wzQ{#qGqgbFYktt#wBclB zK3ATYE^>xT*3|2a`EdRfz+pqh-1;q%>5BfM*+dW90yX*I{l31b4j9UQ6Fb`C6XLK%N4DD;clO(7x0LpjzWgKdJw$SSgq3 zNb~^LdfjT)Ii28p{4sZy{qfSzbRky*|E`Nw){F5?kH%I(JJa1l%0&KHW<9;8B}#3t?m%{eqS_s1J`hFaD5&SMHcxnz_j;*<+%by z!bA7>MK7%W}^`|RoxR5Aqn%AsQb40tePQIxz!t0~o>ujQNM zFaM-*#_p6)dW~M*`4h?VV(7c?vXU{VqfpgbAdi-koQ(b!t*1XlHW8$z`md|n;6qXV zHt#YRzgxJbhT4wmB1+sV5bFj5Oa0^`V*3RFg974Zw^d{KI?7FYUuXQK`xg55If&x2 zWzAp?y>Mg({#V_xUu?Q*b*h{Vxp597te}-!5;0J>#=6qxm zoHx^5Z=*6lT;oTJPzyFz?B5gT-iyQ;d`7jO76yF-o=xY9Jgn1w3r5{kys-b*`U`c{fDT~K!Yk9^Rh!Ps^V<&dM<=Wv*4ykj6 z3WHDmbNyXOH8{Mfyw(r|$23M+_`@7qNIwHpPn#Z%4Z@qR~K zSw#uICM7i-2yPU-=hkd{e1xh!U}KF>GvTAt?P8WlDmO;L3N^ypch~u2ln)idyBgxF?y|#O2y9s?v+9;b`{m() zsUquAZx)ROe;@tDj~g`Y!;*W9j)Z~U69r{$l+vYwJ+AERAXeqp zYzb_%e#HVD)%?wE;ke!s!^Ge(9)b&iBHH4`RN2k2|~U_`WV9OoU1%#F?ojFe65v%Nr@SLpu3kHo!O z2(G)aw*)P44o+ zXH95&-qjN{P8Xso74$N6XD;;w@vVLF5E;JPInGd4(w0>ly7nvF9hnrqw;ovK3D#%q)x`UIV-J$KQ+ zsrIr&@8FX{w%4W}4xo#e*V}s_SjNjk(nOjGt$rc^g7~+jzUfz`a+ffZkHWcpVwTlE z$1vv@Y@7Amc$-7+r^4U>3vKlmyA=kU$@Nh})!^Dbs+*yq8!$k`PMzGQP)d|Q2a4SR zVe2V`KF`3t2lfIGCp}@$5U(vf#%&7n^`G=a{qvQ&Ql_U6w^d;K#*Q{>2Xbsv7O`xw z;akaB_T!(YB zx7RZVVPJj91QbXa7AGw%!#b+#rGABL+ponLjdx|lY=$?A5tq5Kqq&qxQUmj);JCji zC@rJXiyFg(bYN~7Vu+?)+V(&i9&+gFj2mGVBe&L{^%j!0q+g{i85~;BVN-F-*mcH9 zu1RDS)=t_GX1Co9@@8gbkga0$F^$PTdJ%sS$9h&&I0b%eS4BjDUEFKGtJDXE7)*pi zV!scTCur8(gzJRr8BsaZ+vlp&mGwC1s?!h&Z@!o#KiJF;YU<~zGf*+89z`y-srx`L zI;vzU4Y3BAc~4J_$~#T`JPM2QDsSuK9LQ4HWxTmRcsrC9Xzja}wl%!Vz2xyWitmnU zek~wnSOOlyWnGyrI^s%gLG9x6Td735{0aLt0eH+4C9aLooiHEq;s@?*sCJzw^?cdi zmS_=R19HUilC5EMYs3wwy8VKk(?zAC4Bb!+uZjOKxeeQ}$i>5842!75JxZ`hWl{DA zQJ8hBevY)`d}82OO$7h?hs^!LgRSRl|An)URtN;BgmLlqlf4)Y5t|pJ*-aS9*iN{0 zp>%$itHU@s+9q;G$_H zj({$qh&S+bPUIgU^aW;f@C=uNZ9J3uqrcAbdQl*Z&{-8beXb9a4wFX2rhR_~7o&dp z&M~IU{ctE5dBr{b^ZmQJD(I^sMNm4w{Xh_L-#lntek4bQu<|P5lVte*VJTHWuH70@ zp)uOLmg_rj#`75rg9sfnwPCLtc1cxx90dS$#Kf85t{$NWC#`*ks?kmT!yna#hf=kU zUk+u*=#L6;Kw&zamUp*BmM`d-_V>1QltJ1Xd#fTQzyM*2O6Tu>uzl_fFcHS9b+LUK z?@n`NF^pvdhcj>VRY(o_5A2({LT6CXgI{G|j5|KOo08A^*@?SITcOST@LJuthrs&| zgu^NaJT7qp8IF0Gy12(49nF7-;FRxGhD zH_$U%6ny7SbqTi!8RuAaIlZBGfd&4kj***gTo<`;TV%!}H**BG>(!O$p|J#wg7~Ss-&&z>V^KBm08&tT~ww_PDxVJp?~jy0ttqsu7R) z6I3I#YzA!|iL|eQ{0^zHiusEC&ZJHUzWY;TnY=MkeY{JzqOwwKMNd)y0G ze!EWm8sX%=fqLAc3E2I#(e8>|CS=wU@AfV#gFpa0ieirGcRl#zPWqx8Rl(z*PMUI!LYRk&(!D`ai z6zMvk+h8uw7Vmk!xNy!s?y3IRo^)<(3${gX1--j;PJL-O|05@CuWQU^)Yx#!XT+_= zzEc>5{&sGPylmT@3`mz=G4L0N@ya8$1w4Zk+$GPP!bF-cHx-1mzKV`8w^UXlfB`}(2foZz@)k3Z z%g4^4UgR3>F#=ibk4*lW(vuf3@ZeZjc&feF6^C_~m*Apfz@YI?hYhNK$=Cr2Ju>@- zt4ADesJljj7u(Ng^aK_N}1=i;`*;Iu<<-8Wgc z`zIH?bupC@m=w+jHo-sLF+FF$A^4r-Phv{~8DL|@QPX|UGWgZ zG2{*7c&PT^=|WFZNo)z5_Ry6XDc=)>Ea|A}!D2#&m@<%r^Zru{u*duy7PxxDAL&0z zbdQ0*<P?G8}a&Y|?{86OQpTs&avPc+*YCv^h{NnWL2>Y)-umKLfE&c8#1+0*aA@U|- ze2#3mg~bDMcd)YW$xNQ6c9!gxhsjsO$SVP1Yp7+TKcyE8XB|Gnz(|UltzX@$iI+f% zBYfH%1=pARCs*z{%A2zD;pIQNu~ZY7H;?BFKrM%V+}Ui(`MHXpz6^EF-}9X+Z@4pw z@9*fSX+XTGzar%$^kdBk=5xTA{Ym`kfd$z&I%($Sq8F2f2A0>fEjOhsH0mq$OJ{TE zA+@8X;Z8c*U9yTNR?st0VK-A4H7xsy3lX=HYE&{#QrI;M%emzm+Xb z075i%*yK`o6*+Z$B|JwvKHl2$kHy_zvuUn2Erw7#B%{CaZQ9%;SOyn)4xNXVofx+K zmb(OKY1Y0?f?#;q{!UMG9$BJJv|!rtph<>&9G=iF(M()7Tf$PPTxk9g#~_iP4d4bL z(Gh}rQ11txgJ9{9Jp!xvsmG^fLQhYlK=qA`tG(sl0}vvoAQ+<`J9h;b`r}H*EK5|k zLA+GGWqqkxWDJap-L5ky1p)A#0{Y9WY>g*=an)Xj=w1hy5jhEZ`fbaDhb|5tQvTNt zm&r)Q+9xUHanp)j=VjSTyWRc_1yZ}?rV%X6O179fhP>Jt*)b0vS*AvA-(a| zAXatDnRd`SuY4D- z6eD5M+_DD&`6FZdqV-usV+UmV0G~n@RcS=x;jN*676r!mX@P1=q^U>1NnE37Dxaiv zs?*SrV@sRz6slgr{ZO`}|Iq_i5nb$Evk18m`r!{5Y?E^y$<#uIFh*2m9@%9RAz}p9 zrT$wc;eLc+�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 e.getKey() + ":" + e.getValue()).toList())); for (var repository : repositories()) { finger_print.append(repository.toString()); finger_print.append('\n'); @@ -1627,7 +1628,7 @@ public class BaseProject extends BuildExecutor { finger_print.append('\n'); if (entry.getValue() != null) { for (var dependency : entry.getValue()) { - finger_print.append(resolution.overrideDependency(dependency).toString()); + finger_print.append(dependency.toString()); finger_print.append('\n'); } } diff --git a/src/main/java/rife/bld/dependencies/VersionResolution.java b/src/main/java/rife/bld/dependencies/VersionResolution.java index 37e69a1..c010f17 100644 --- a/src/main/java/rife/bld/dependencies/VersionResolution.java +++ b/src/main/java/rife/bld/dependencies/VersionResolution.java @@ -112,4 +112,14 @@ public class VersionResolution { original.exclusions(), original.parent()); } + + /** + * Returns the map of version overrides, where the key is the name of the dependency and the value is the overridden version. + * + * @return the map of version overrides + * @since 2.0 + */ + public Map versionOverrides() { + return versionOverrides_; + } } diff --git a/src/main/java/rife/bld/operations/DependencyTreeOperation.java b/src/main/java/rife/bld/operations/DependencyTreeOperation.java index f2e2a40..b3deb28 100644 --- a/src/main/java/rife/bld/operations/DependencyTreeOperation.java +++ b/src/main/java/rife/bld/operations/DependencyTreeOperation.java @@ -6,6 +6,7 @@ package rife.bld.operations; import rife.bld.BaseProject; import rife.bld.BldVersion; +import rife.bld.BuildExecutor; import rife.bld.dependencies.*; import rife.bld.wrapper.Wrapper; import rife.ioc.HierarchicalProperties; @@ -24,6 +25,7 @@ import static rife.bld.dependencies.Scope.*; */ public class DependencyTreeOperation extends AbstractOperation { private HierarchicalProperties properties_ = null; + private HierarchicalProperties extensionProperties_ = null; private ArtifactRetriever retriever_ = null; private final List repositories_ = new ArrayList<>(); private final DependencyScopes dependencies_ = new DependencyScopes(); @@ -68,7 +70,7 @@ public class DependencyTreeOperation extends AbstractOperation @@ -338,4 +358,17 @@ public class DependencyTreeOperation extends AbstractOperation resolution_.overrideDependency(Dependency.parse(d))).toList()); @@ -70,14 +69,18 @@ public class WrapperExtensionResolver { downloadSources_ = downloadSources; downloadJavadoc_ = downloadJavadoc; fingerPrintHash_ = createHash( + resolution_, repositories_.stream().map(Objects::toString).toList(), dependencies_.stream().map(Objects::toString).toList(), downloadSources, downloadJavadoc); } - private String createHash(Collection repositories, Collection extensions, boolean downloadSources, boolean downloadJavadoc) { + private static String createHash(VersionResolution resolution, Collection repositories, Collection extensions, boolean downloadSources, boolean downloadJavadoc) { try { - var fingerprint = String.join("\n", repositories) + "\n" + String.join("\n", extensions) + "\n" + downloadSources + "\n" + downloadJavadoc; + var overrides_fp = String.join("\n", resolution.versionOverrides().entrySet().stream().map(e -> e.getKey() + ":" + e.getValue()).toList()); + var repositories_fp = String.join("\n", repositories); + var extensions_fp = String.join("\n", extensions); + var fingerprint = overrides_fp + "\n" + repositories_fp + "\n" + extensions_fp + "\n" + downloadSources + "\n" + downloadJavadoc; var digest = MessageDigest.getInstance("SHA-1"); digest.update(fingerprint.getBytes(StandardCharsets.UTF_8)); return StringUtils.encodeHexLower(digest.digest());