From f46fe32264107465e64f706e5a1873520395773f Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 3 Sep 2014 11:16:49 -0700 Subject: [PATCH] Add group discriminant in case of conflict Prior to this commit, the repackage goal silently ignored the case of two libraries having the same name and version but a different group. As a result, the second library was overwriting the first one in the repackaged jar. This commit adds support for custom Library names and updates the Maven and Gradle plugins so that the name includes the group ID when there would otherwise be a duplicate. Fixes gh-1475 --- .../application.properties | 1 + .../loader/ExecutableArchiveLauncher$1.class | Bin 0 -> 1165 bytes .../loader/ExecutableArchiveLauncher.class | Bin 0 -> 4648 bytes .../InputArgumentsJavaAgentDetector$1.class | Bin 0 -> 1082 bytes .../InputArgumentsJavaAgentDetector.class | Bin 0 -> 3373 bytes .../boot/loader/JarLauncher.class | Bin 0 -> 1913 bytes .../boot/loader/JavaAgentDetector.class | Bin 0 -> 192 bytes .../loader/LaunchedURLClassLoader$1.class | Bin 0 -> 1393 bytes .../loader/LaunchedURLClassLoader$2.class | Bin 0 -> 2165 bytes .../boot/loader/LaunchedURLClassLoader.class | Bin 0 -> 5439 bytes .../boot/loader/Launcher.class | Bin 0 -> 5735 bytes .../boot/loader/MainMethodRunner.class | Bin 0 -> 1952 bytes .../boot/loader/PropertiesLauncher$1.class | Bin 0 -> 266 bytes ...ropertiesLauncher$ArchiveEntryFilter.class | Bin 0 -> 1680 bytes ...Launcher$PrefixMatchingArchiveFilter.class | Bin 0 -> 1964 bytes .../boot/loader/PropertiesLauncher.class | Bin 0 -> 17578 bytes .../boot/loader/WarLauncher$1.class | Bin 0 -> 1545 bytes .../boot/loader/WarLauncher.class | Bin 0 -> 2960 bytes .../boot/loader/archive/Archive$Entry.class | Bin 0 -> 333 bytes .../loader/archive/Archive$EntryFilter.class | Bin 0 -> 399 bytes .../archive/Archive$EntryRenameFilter.class | Bin 0 -> 506 bytes .../boot/loader/archive/Archive.class | Bin 0 -> 2419 bytes .../archive/ExplodedArchive$FileEntry.class | Bin 0 -> 1310 bytes ...dedArchive$FileNotFoundURLConnection.class | Bin 0 -> 884 bytes ...odedArchive$FilteredURLStreamHandler.class | Bin 0 -> 1868 bytes .../boot/loader/archive/ExplodedArchive.class | Bin 0 -> 8418 bytes .../loader/archive/FilteredArchive$1.class | Bin 0 -> 1549 bytes .../loader/archive/FilteredArchive$2.class | Bin 0 -> 1998 bytes .../boot/loader/archive/FilteredArchive.class | Bin 0 -> 3733 bytes .../loader/archive/JarFileArchive$1.class | Bin 0 -> 1948 bytes .../archive/JarFileArchive$JarFileEntry.class | Bin 0 -> 1191 bytes .../boot/loader/archive/JarFileArchive.class | Bin 0 -> 8087 bytes .../data/ByteArrayRandomAccessData.class | Bin 0 -> 1531 bytes .../RandomAccessData$ResourceAccess.class | Bin 0 -> 1341 bytes .../boot/loader/data/RandomAccessData.class | Bin 0 -> 551 bytes ...RandomAccessDataFile$DataInputStream.class | Bin 0 -> 3526 bytes .../data/RandomAccessDataFile$FilePool.class | Bin 0 -> 2231 bytes .../loader/data/RandomAccessDataFile.class | Bin 0 -> 3390 bytes .../boot/loader/jar/Bytes.class | Bin 0 -> 2157 bytes .../jar/CentralDirectoryEndRecord.class | Bin 0 -> 2943 bytes .../boot/loader/jar/Handler.class | Bin 0 -> 6389 bytes .../boot/loader/jar/JarEntry.class | Bin 0 -> 2365 bytes .../boot/loader/jar/JarEntryData.class | Bin 0 -> 5846 bytes .../boot/loader/jar/JarEntryFilter.class | Bin 0 -> 314 bytes .../boot/loader/jar/JarFile$1.class | Bin 0 -> 1302 bytes .../boot/loader/jar/JarFile$2.class | Bin 0 -> 1563 bytes .../boot/loader/jar/JarFile.class | Bin 0 -> 16132 bytes .../boot/loader/jar/JarURLConnection$1.class | Bin 0 -> 672 bytes .../jar/JarURLConnection$JarEntryName.class | Bin 0 -> 2825 bytes .../boot/loader/jar/JarURLConnection.class | Bin 0 -> 6565 bytes .../loader/jar/ZipInflaterInputStream.class | Bin 0 -> 1629 bytes .../boot/loader/util/AsciiBytes.class | Bin 0 -> 3700 bytes .../loader/util/SystemPropertyUtils.class | Bin 0 -> 4955 bytes .../simple/SampleSimpleApplication.class | Bin 0 -> 1408 bytes .../simple/service/HelloWorldService.class | Bin 0 -> 801 bytes .../gradle/repackage/ProjectLibraries.java | 73 ++++++++++++++---- .../boot/loader/tools/JarWriter.java | 2 +- .../boot/loader/tools/Library.java | 22 ++++++ .../boot/loader/tools/Repackager.java | 11 ++- .../boot/loader/tools/RepackagerTests.java | 19 +++++ .../it/jar-lib-name-conflict/acme-lib/pom.xml | 20 +++++ .../another-acme-lib/pom.xml | 14 ++++ .../src/it/jar-lib-name-conflict/pom.xml | 19 +++++ .../test-project/pom.xml | 58 ++++++++++++++ .../main/java/org/test/SampleApplication.java | 8 ++ .../it/jar-lib-name-conflict/verify.groovy | 14 ++++ .../boot/maven/ArtifactsLibraries.java | 29 ++++++- .../boot/maven/RepackageMojo.java | 3 +- .../boot/maven/ArtifactsLibrariesTests.java | 31 +++++++- 69 files changed, 299 insertions(+), 25 deletions(-) create mode 100644 spring-boot-samples/spring-boot-sample-simple/application.properties create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/ExecutableArchiveLauncher$1.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/ExecutableArchiveLauncher.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/InputArgumentsJavaAgentDetector$1.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/InputArgumentsJavaAgentDetector.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/JarLauncher.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/JavaAgentDetector.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/LaunchedURLClassLoader$1.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/LaunchedURLClassLoader$2.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/LaunchedURLClassLoader.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/Launcher.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/MainMethodRunner.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/PropertiesLauncher$1.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/PropertiesLauncher$ArchiveEntryFilter.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/PropertiesLauncher$PrefixMatchingArchiveFilter.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/PropertiesLauncher.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/WarLauncher$1.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/WarLauncher.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive$Entry.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive$EntryFilter.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive$EntryRenameFilter.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive$FileEntry.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive$FileNotFoundURLConnection.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive$FilteredURLStreamHandler.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/FilteredArchive$1.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/FilteredArchive$2.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/FilteredArchive.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/JarFileArchive$1.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/JarFileArchive$JarFileEntry.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/JarFileArchive.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/ByteArrayRandomAccessData.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessData$ResourceAccess.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessData.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessDataFile$DataInputStream.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessDataFile$FilePool.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessDataFile.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/Bytes.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/CentralDirectoryEndRecord.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/Handler.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarEntry.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarEntryData.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarEntryFilter.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarFile$1.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarFile$2.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarFile.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarURLConnection$1.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarURLConnection$JarEntryName.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarURLConnection.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/ZipInflaterInputStream.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/util/AsciiBytes.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/util/SystemPropertyUtils.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/sample/simple/SampleSimpleApplication.class create mode 100644 spring-boot-samples/spring-boot-sample-simple/sample/simple/service/HelloWorldService.class create mode 100644 spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/acme-lib/pom.xml create mode 100644 spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/another-acme-lib/pom.xml create mode 100644 spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/pom.xml create mode 100644 spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/test-project/pom.xml create mode 100644 spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/test-project/src/main/java/org/test/SampleApplication.java create mode 100644 spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/verify.groovy diff --git a/spring-boot-samples/spring-boot-sample-simple/application.properties b/spring-boot-samples/spring-boot-sample-simple/application.properties new file mode 100644 index 000000000000..4dfe84cedc67 --- /dev/null +++ b/spring-boot-samples/spring-boot-sample-simple/application.properties @@ -0,0 +1 @@ +name: Phil \ No newline at end of file diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/ExecutableArchiveLauncher$1.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/ExecutableArchiveLauncher$1.class new file mode 100644 index 0000000000000000000000000000000000000000..584c005f483aeacd3fc466c2d10562d9cf12c8e2 GIT binary patch literal 1165 zcmbtU+iuf95IvhFF?J0JA>0a-77XMfVTyzhghoPD5J+x80`-BnjkCmC92>3I1^$T_ zBrXyUd;lMX7(3=7l**`B^6t+1%-K0Jv;Ow|%U1w5(Kk`Wc?&gMu&{zv0~Zaf8Mwqy z*MUr&8w>+4R#P{5rDQaHq4-R^j@3(d9LL%XV?Ghe9la5Ls`)q+_mv;Wec|ym@&lm; zL~~C@QV$u1o&VtJ?lM%j;)!5rcrp?@>1-_2v+PKQmKXax+~rDUcClH_!e_7_MUhZj zAx{!P=H}sJa5hMdG2@zqB?cUZ+9=ZMEyLY%Wqh6&x5$r^dk(tKiA2mvZkI;3n1jK3 z8mGz^4`h~$)dOpBeUI;RO5Z5*!#JT@ZVMg669ZRlT*WmT29DS;(Xr7*o63IZsyiDD z&FnNcsDEO3%MBXl=&T)L5B8J=)9Mna2*u2 zq^@dpx?Zj~)iQKFnP_U2rB2qg4VmnSM2ks*W^l{S|0`~+(G{(MZW36tnN^8yZiQYG z7VR$6YDjjrWA*wU!Fr!jd7oo!8p(^s5suP$YL3D&G|3`-&c+CF9PNT@v*0p&AHe#b zu=I|A75t`p_y?8wi^{}Fq9@fjo#W5oEX`H=r<_BBRx9+SN^|zKu#OXTlR{g^<+}L; Dl}kio literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/ExecutableArchiveLauncher.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/ExecutableArchiveLauncher.class new file mode 100644 index 0000000000000000000000000000000000000000..2bca1062284d3348fed8251dfa3c02bce6955593 GIT binary patch literal 4648 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 TPkRv;u#8h=xkOx|ov!*5Oq3TC literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/InputArgumentsJavaAgentDetector.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/InputArgumentsJavaAgentDetector.class new file mode 100644 index 0000000000000000000000000000000000000000..99b6ba194164e3d64db03ced5708ad810915dc9a GIT binary patch literal 3373 zcmbtXYgZfR5q?$(R)_^`2qYwpEnkAM0LxC|T)@GVF?NK-rN+h~ZR);AYk6(4tL&~E zySMayzbCyUP203h>s}LjP6Kv0r_HB)$UjQYNt0)GS3<&^lMgw-ySwwwJM+xUGqcOP z|9|U003O6@5_@q`md_=ThLXGGb}j`S#U$E9V&amHl8(zsSh%9&Y7z!i2ij5YzzS?x z932%o`>YN(iC%cJ__9=!xQ6FCa2+>vd|t;FbbK+1`=Ao|l3c%>!1HqbN)q?N)A7{= zzLvyJd|j4r$ns5Dz9q}I#mskfd{@W!G#EMCHr>gx@;uYiuyZ=Qn7x=iJvDpo;{4gE zQ@N)!^yIIoYbsM#b}6&qyOv!V*U&lX*q*O!e^HgICZ9zoTQY5bTDdgT9UiLsRyng^ z`aIFTV3lm;S6yoFZr(i>KH8?AIe#`kK0)oaW0r0C6B=5E4lZhlPdY`O>&{!YIa^&> zHr;b-xlBn<-YKZ^qH-;Hj)ZalvPBHpyyKQKUPT~Za@C6Yoa0{2EIW>$DLblYx|y6^ zsrp&BR9zu(Z@L!3Nz*qAzT*-{?@$BOyyf}h0;kJrI;dgCRxJ(v&B$(4YUuWF(T$>S z%&%nNz*f)O>Is^iCDU(?gn1b{xWx@k#?0#)`a*f&Zt8l$toW8=bF*{7SB0xHsuCoT zOw}-WhmmbDFnl7YXD=kco~`i58v%ush@e;xp1|BwFtl=<|W=!N_`JQ6gK7A`KnpvsG30a&}R2tK~>oq85g1(uoOS zks^yV-v^(jYSk@MH7rPNLql@Gsk#O8lqCe;-(1;xmTMe6B#mbvixUPO#<(m;4LpgQ zfx|e$Cis{=u>XjT9~$@(eoUm|D--mzv;w;$5HwRs$4?CW6ek$+ruvi0yUdy!_!(Yc zDGj`cpBwlEeo5|Z+6bqMfpa*|$rQ-R4atLq^(zA};bjBA#w$90W8k;=9f@J!Rs6n& zq?t*aGn=+^<+52)Ws=-C>s-@t_ohbZ{Y2F&b2MleJEiEjnDU)ek@LV^;pj;flXWTUK7yQ-0 z-|%+>|G+=x?sWriNGci8sUu&Y$HxsBeW0p5sMuq4d-I&NGYSV1OcS4bd=GddNoI!lKyS{h9l0n?$zh++imrc7Q3d|-W zZTG6nUhsh+M{;)ppl98ZNjZ0kxu*sX^$+E?*Gv>hBW2kh_VAl14GqJH@$+UBhj^di zmsbq?&?8fh&kqLA5AkD*B*Rgzk5KXmbu?ZR>08j&5&Ku5^(faQcYqP-wD%bAj8G4c zV~kIbQA!Q5@foxPx?SmYw4~F+>xjRJRpM6xvVq>Ef!1~0wT8Ym^snLW+qfr&3pX)1*0zCrmo{)8Eq)7+(n;*P7BJmt1k~{{8LeiOLWMC>1M8A*thl&3%PE%)wS~<*O z8V=^*Vm^p6p_o9}0AQioeiwoP7^_|HmU?Jr{V#ml%x+gI-~&1V(ze zXWtt3zl6QP%>!!~oEh2i#2OAv+#h=l$&nW3X=r9-Ra>QY$gW*MY0mNgg!BAAV3GX4 zfZccsgLoQ47w3+fR*Wb;Ax(bzLAg&#NNjsfotzkqG5@)LZruu zTl%6S{cp6A1_xt&xk#f)Wu&zL)j;r$y7>-#nqc^aiDv@+&$6|o$v7i;WdnW)BQ!x# literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/JarLauncher.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/JarLauncher.class new file mode 100644 index 0000000000000000000000000000000000000000..86df3f185049d9793d80398ecb8abeead7a01b29 GIT binary patch literal 1913 zcmbVN?QRoC6g^{ay!LwY(Ey>)6eta?9XBlDv&1Qogrp5MAyTSTQ1!=nJ+%imyVmTO zl1HI0&_DgtRwANEeSkhx#hvwrIxD25M9R#aJ2U6rd-mM%KmY#qH-O97b})g(Do)|D z8Lm`N##IMZTyw~}Ud0W3Y2&6@ESh1-Mzf4%bK)x-w-}18%~giQR;0RK+*dN}{-pSx z_&HKfyml06FNk~bZ|I(1sQCu4?%+_?9+YVkqn_k^ODlQP~Cu@;>b<@e-MVdDA+NWpJC=Gv-|x+cGogzm;Y}S&09pa zv;NE%eJ!Ifwz0xc*^%9l>w%(=x{*!yeL^I%+2b;#Qffa8a}Ide^>(xoV#0vMRoBq- zmTjVE*$+|?Iy=!o`C>yF$xV%@=Axn1#Rr&nv5GYpcd_nb5>qZV@U@F?uxaC-i*M0l zXymoQ2(XL$XfSwrS2CSLof62lXENGixS4l*{h9Cw+H_8;mBVhZ@qpo4-t|;JM-@(V zCR$6le)EwTsxrPSmGE_B+KJkl8o}-gy+scK! zCI^RdNUMLhG%{6F8WTsGi>l+Dj*;Ewi0mG;A5-y(>`FoM=rEi}g`U-A?q|>BfKTZ4 zouD_H;j~d7Sz~0AENMJOE01Poyz>WOzmrkGaT-gB^9)Xq?G6uM1}AA{;X}-l$6WrA zP8VoC(|Cyj!!MX2qsZ_FtQQ!24%_+_R`EAFQ5->?OHgNqH&ax?z{m8@aF$Mwp)h-g z6pM3|e=!NQOS1{(Hj48vPceUG0ONncGC*vEmva=%BVPfR@Da@p?ViGIoGw*f13wk+9RL6T literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/JavaAgentDetector.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/JavaAgentDetector.class new file mode 100644 index 0000000000000000000000000000000000000000..45c61eaab60c20c940c68c3b479192be2979c4e7 GIT binary patch literal 192 zcmZWjy$%6E7@UuDheBvP1C0%>N+OEOB@&|1?VZo&&e@f{#k(myfQJ%$3XNtmnatno z{dfYHp%WpB&?fZqDwa37P^?`nEnzT93NHxFPV6?xe7q-gx8`ayUgaedhClz39cRwi zNgW_eja8z$*j%flm1n*idlIQJPLxI-*owa(q5s_~rB-5{7QQVc5E}j?KmnnNpk`=! HY#{sq%JVe3 literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/LaunchedURLClassLoader$1.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/LaunchedURLClassLoader$1.class new file mode 100644 index 0000000000000000000000000000000000000000..619cefc3e68898be3109a4e800ed723b081cd28d GIT binary patch literal 1393 zcmbVL+iuf95Iq~aF-hGfExl4G1wu*Oizzn&ttwDe1dVd!@klqg@gDouDp4hG}P?A91@Axt_f(J8cp0$o1tq!?=p} z{5tni;n}F=h9$zf>-a&_4i5uYHeUz4E#COSfn6hT+w*xt1h&IFvfdJn7rV}u$HUNx z-2|N7aHSh31TRg zE4`+qh-_k#fF}O9JT9B|v)aC>N94{`-KOMGC!n70_3oqt`ct#a$7o(0f>*Wz2)o zYHG!z;szj1^u(G7qovmAH->SFI!o4LWMa>RwbTW(mb=JUD_v;T7w8}9{|qKbW+@tI zVUpw&`9R(&%#c==!e#U&@)OjT@fn!6J|XiJLk#awAX|&=V;K5-=-LOmt;P8H7}F!1 zcAUec`*b_WF-LY5+Kl!Rovp=EXOGJ>@33%7$?1y$$=t!*+xkN0r3-3 z&7D-n#Z*QOY_|AN4O5cNPSOoopK<1d5dP<;SNBkYqT^y5wSY^pzKkoRb(C-w(`2ca I%8{neZ#WQ1DgXcg literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/LaunchedURLClassLoader$2.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/LaunchedURLClassLoader$2.class new file mode 100644 index 0000000000000000000000000000000000000000..f589155033307fc1cbfe1e2007bd057a3f295c86 GIT binary patch literal 2165 zcmb_dU2has7=F%v4IKu$l(w)ST4japZriB^Dz>!>ODiqg4=5BBl}u+(x6>{&>+EcW zd;JmKdc!Rwwi+*pn%JoE3&^J9*HB1S#%sD033Ti&HoM|qi z&Z$bf<~zXybJllOSx`w9H{D#aRazs>rlZVBpYv+IE$dA+6!k&SfxMg4-w^^rwx6vh#+Y7+k zT5jMSyldbN-ZSt%J`gw>PRq{Lb13$5xqF4_0fFS!_|@?ta5iM^-P;|;_1R^+?)>-u zjnG{K4+33V0Yj)yd%?I@bGI%|U~qrs2&9T~krOvte>uiIqTDTpQCL-G8x$HZO*2Og zZ#1K*=F3XivI)P=Og_JTjy9jEgzdSu6$qT!#rLijT1f_+3QqTtOm|bKbV~D{8%UQv zTY2E%jk$sU;EELxiQ~IQ*{fF#G;R7J`VZ3el;t{$vdTawo;?z^z$u$b{h3S+ie=lf z%9ppFZ|^7n`@7j3awmGWH?eW6!|3AYCkeI?(PUB$Ai$L~7_OX3ey<|@AH#8KrMSDw zbBt?yHn#?m?O8)4+q;Hn_6x)whuSAd6VwL2#Yxi6&_g?(!}C1RQcXMM0xvLrM0pjb z=~JVun*AJ+WM9%;N4zbu4y{0jSjT~>o+qQx!B|J^)MuFK>4*&s#Z&Qhw0r~oQ=AL8 zUqc^Cq!PJx9Na)xiq^&kjw^fqqv1If{}P98i$@O;A4+^26Azz07LS-n4iXLyBMO!L z01VRa*pv-QzQ-Vb;FtI(T*J?}j$cs3uUN$IwD=7x)cFv9goU0*oO);QB3@zxR_Nn2 z(%j|9eVP2YDzMRpBUr#$wpk!UZW{5Y>_%Kew}z~SoM8L@R^R!a%NlzBg7}lxebkK6 e!X)kIK7v=6t6IrXTu*VQQ>&FLfByoEQcflS literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/LaunchedURLClassLoader.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/LaunchedURLClassLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..260c754bee2d9e98cca8f98687225bcd027fb987 GIT binary patch literal 5439 zcmbtY`*##)8GdGWlSwuc5<)HwgpkBQlHI^UinS&b2`RDBO+W%vpjs!plVoApO=ou@ zsMvcez1VuGEw=V1N>$nhTas8RC@5&X^mmU({{#O3k4Jponc3Odkev2VIDGS6-tWCU z@9kSY_}_aM0rcR*AUbe7h)#T6X5T31@Xa7j;9D}>FMAJ^;lUst!o#w7M21I&{s9$_ z1@Sn(9mGjIAv;gX8HW>iO2yMbtiX3<=b0d$#dl@)JsG|)1V2#moGgAQ!}D_a1rc#d zh9Ak^i!!{V;>SU>;pHG+!K*U7rs8!KKT&a7fi{#%8RkGz&t!~@f+{ne&RVNzT8|s1 zf`;fJ{iq&E>Zyr{=b%qP>6Sz)k=?4GtMi~ulrplBy}P4*OI+#NrywwpjvJH{O{9#G z+>tTE+@p^rxl%GLSQqV%Gu2)f)dDt@M*d^9nU(z7{}X7qi0PFsr2+R9*4C-n@SOO5=UT?c5T2TpEQO5En* z<=TnbMO0jtlsNN{))xof@u__9b=X=gZ) z;~|Ta*lf~^$)m(hp~bZeDYk^R(q~NLGb-Lt@pBcwQ1MGiM-QbFFgI!-x2Z%tEdlH3 zzIKtDi>Y4c5#V~9-2Aa5{r;SS&X2>$(Le%j7gI%_prLh(U1Zs)n6fEGtc*~ZXxTf{ zOkQP3L1Ww?55wUxm^KH=(Xpsw5q=)!^O;8pj-44JmNOIC38fG!4VqU|q@t%eq7}PL~LDv48EB)=8 zMBfV<-p81V-)OjqOB!^HY4|OEr(qOhEd2%5T=#02z@&!DLOF^(8m{2?8vcN*8m{4w z8j?72^GfxIQh!qMfrdZhFB<-ezbWXjwD{=2Q*hhOVZm}}iEx6)N{xJ*(!3{mL=x%9 z&`uW-1=R(d?2IYe+BtT}h%pzd3RF(^dGOscX{L|aoxWuO-AFn+n9il*9)XobDXn05 z$uz#XM5$Y#LLQBBc9mVuyP&btn`9o)80e+OeK}p;6-D*R2BJ^elS)Q*yIS7ab;H}k z#?w;0-!%2(WK^nWqKOPqT$_JPS z(OlNXG{bORKKd8G;LtG+wRpPFDi!Dsw(hmUp_|`!Lv=cuOIV~(p1&6?Cl}DlA2pr) z-Nl!&G$PJ4&e@zeZs2Mk{QL`4hr-=+@P$Gg{pS%l$2}h+9G6+=5tL#hs<4S8&|=@= zs)sAy#;w>)jxzf+rTF-lz0Z*`&aaPW4dJV(4bP(F8cM=5GKrqK{%>W5M}A9GJxVy= zi~yNbkU=GGM;%+Hh^)6+xFQ>P7AE7*@~njSHI)l?S4ZXvl8ap}%5dmi1g=7p4`r4P zcV9zAh%@yJ0^J4SH53bcj`y~qoGrQr10GvjT){2af;%Y1hh}WG=tYG}`2UL<727Jd zao{m~yrasKc~!zSWwR(hh2^0+1WzFtnni`bXC@S$gEliv90a6#tR}MtG+AFSE<*(O z3p|PPWQ4+Zy6QFa=60$p_it2G)KlSW*rDQ1s>IgOC zi!VbB&@cY8)@6ymQtR{{OO(W}M5G;ew(EV`HetZ`k7L$p#)G)BLp**B<>Kq*GmiUf zhOOnu1+3T~>RvyGS}`u*2|t}+jnM@LT`^8KOj?pdHcQvY4#&uPET=Pe(xN7Y>@Lpy z_!2ovxY}pC-Lu_1b3mzF1eAb0p==wJCSFp>ra!cQ=*!x|K`W=j9 z?`{T*&q79gXw&Z}z2Ff+;5ylts5qeFprYa)6<-0rUo9)YPMSdBz}j`OyVnV*uaPxh ztB(IaOU&XMLksoo(7^R9vG zNGZkyNVNh97D7R~!!;|P7Aj#pgu{+GjqqJ3tAZa7iXV;tP?dshKKZr49kJ9A~ literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/Launcher.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/Launcher.class new file mode 100644 index 0000000000000000000000000000000000000000..75c6d66de2c00d0a9cc44b5bc240c71e70f41ced GIT binary patch literal 5735 zcmbVQd0-q>8UMY_CbOAL(lkxdCZ%l}C`~p=ml7%1l$JIv65OOEX~6)B)6F#5cC!;_ zCp{4H7Ecb98}Fmua>%A77Vxa%Eht_n-nZg~iX8slo0;9&Bp77>c=P7H?|t9zJKwi+ z-;;OU4d7I9vW_lXr{Q`X?YKe5jku{25!|ff7Q92}?45FWmmJY&9=5;K^ zlw3Zd;i!%l+$D!;Iec0Ugw=v$a=2S!yGO^p_>6|nYWSRnizJKBYxshWFXFg{FUj{W z>$neJ(eYJ$O~+zqn+cu2#Kb!^2$lK)S1Jd7J+_^Cie#vUED9D(NKUUR>hm~_*bgj`E!M-xf4 z*CSvI?iv`_Hh4*Ia`VuTK%GaMF-bGzIwU1c#fEe??QRq(YimDWAlhq>SON=@>8v#{ zIlkL+cAC30T&YXiDKm4v>7?bmzZiAL(m8>6(so7@xe3W~k7JHo2W)3wVz+I(#AJ?G zP9kYeW>aI9BL!yET%fV-qS=5XhN@J?%;l2mq`=}3QEzdBoFdjifrilbwu32a!cE&* zZbnUKl+YHn;UDs*pAeyyuzzJ(R*swLtXgCcJCoV0%)k23fkCdx1L|aUV{7TiBI_+Eh;}MX|$l$NXer z$kheZ#k>^QHf!eD+(n-6A z5<6y4&~$o=#dpY_bW%(vzp@wTWnuRANEyqp8cXg1HJ-h_Nblobbb{96!(sg`Y^UwS z*=dHRhF@s-rG{UrYwQ7Dmt?jfmGLhD-IE|mX^Nm~uaSkoKtBcq+U7GxaLB-~ak+-y z82BxIXP^(~YWTf@KVZPX%kc^WFTy1TUWUsJ?1arqt*VWR`9gg$@J9@2_>+M@GTm7yMPid&I!s@ORcI1OLFI2L6eE2_)tNJi~hi{*A{B{0EOSjl&ht zz!P{Irm&_v7- zl|nZ}m9*URk<^4?h-y*8Te^7APoxklFN+MZK-89q*uHx&15*y5xb+#tKydtA(~$`koE9gFlQgl4EytSK zwZBGbTqtaTd(=W7jcBUkyj)QgO2f=jBCw>CpjbNsJNxB=eG6;s09&@;jFME^N%HC= zk=IoUteN9>@~ih8XIYOr<}>qN(@FR?V%c-7QKq%!>~b6wJ|d{U>zg} zp1F{Gvg)Puit>_()D^T0krGJ2uh?>wnIpXW8^ZST&q=A z0;|G^0vgK)25DIl(i{YAxU$xPKDJzDRz~vb5*a}hgwPd& zU=e*hJLOvgM?Y;@pk~!FJPM73zzMSs6?aKqMRNJ4!|OE4U3=FcvuH-B%br745!s|M zA((wRmt9(gIWb{nnE+k$SiPjOlUE7-9CnyVA9HPQiFnhwt!anXo9!H8ef0$gy^jnR zT>(w)Ge>FihCq9jLOb}Ekjq4{u;@5{F}jkU0J`|?B7&%FWjJe=cQKzjgzStsZs*%3 zQV2d5#-||Sb&)*Ejv#s`%5URh1UuA$2*-9Z>cDxN8QuX5Vu){1c0;>-X1DOIjB6(z zK}9^Chn7dIKipHBC+s-xMg96{XHztfhNEbV;DW;6GQ>`cI-xq zxNE5I2xk#k+;3Fc$-O;=y-}`7?P?Ht0_=UpG^8J+jrJ-8j4bTqEP{+udz>?=_Ex@0 zOVv(e>9F+633)7=!g7h*b9ROD%f$+(C%3kMu9ldx+%L+I&bNKuHS zKH3y5KZf?WgT4WqWsUX^L0j)t=hobl+1~cmZ%qvLlbR{hi05iNnyDp{M52J<#R7YjoUmq+yPudK#w< z*R7kv>Gw?I4CUJAO6%mY{wA!Do73nSp2CK@GxOLe*Ei*HmL!++%{OAfG`0*kl~19U zrC=Ic)qGpglyRmta3xdvDpccYEWRWLN-iGzK7Ta(g)9HG~$W0+LU*VfMM&)0F z*U})>G~(-U1=U?fQ@kE;po=<~E^lO{M9F0f-h?;Plrn+hh^Yj6i-s%D)^OG1h;i)I zaP{M;RpS~B*DN|mBaWh3V?-2`&~=m}f6D{ySwzpy<9W0}-8md+gFCQV#=20Y!Ar5V Le0w|BBDnUy6Kn^@ literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/MainMethodRunner.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/MainMethodRunner.class new file mode 100644 index 0000000000000000000000000000000000000000..c7c9329a330ca6529185f6c16f6684f87deb0976 GIT binary patch literal 1952 zcmb7FT~`xV6y1{qCX53}0KY02+gd|Ff>?_RrPQb`ZNOp>n_6iv$t4U7Gg*@f#edR& z;InJh;Hs-1Z(Ym(Wa+*$KqhTo`f~5w^Rdr4`<#2{?ccxt4qzI#fkDjl;2drlxQ#nH zM$}=}z#KkR%e;Zlu#m*(I_?@Ukk@ff$9)66m{H4vB)(Almj+BM>iEjQ*C^;%GBAu~ z0}t_yjujn`H1zHY%gNiKUSAfwQbVe+E%rpt7EU!+^gYX|&T2>quUgkI__UL>#{b7WSI(EOkB-Cj2dn;in6(SIyOH zDydD6+5Y5uJGl+l^>el>D$>g>v6dz2Z@HC64abolQ|~#ckF^$kQQlb+wE#C@pr|44 zH5{%PmDfO|f`Akv7z!ao)o>wV;K@x}mi=6)qh(C)YZ#7L+}|(Dns2!dm1hcVl|8Q= zS2q-K2x87<=V#ei9jojZ;}_kASC$Vf#n14+OPo~gGBJv*i3@m-qhjJQ)=XT)h>j;F zzD3EzcX+DfdlS#FPV!YjB)`?@AgqZW@S}!HE%Bml%c`)+nlDdE(Qvk95l+b6hGmm} z69O9=E~YE4tfw83eLQ`4uM3&l@6CO zntEVHtO3TqC(E|*WaW6+7drSxFLdY|MQf*vu-&3olMZRP)&VQ(*)~aZO#1F|JK7lw zrKIQNn40krJ+E5x!Be?iw?z?f(v z{wETz(DjlAae^w41lNzaUPTWwgdD^Bl%zute1H#mA{?$Ts1|&wurc}o_7}vONEXIZJ&E67l;WvGv58Yl%>42j zn58%9EghgQH0w{DZlb@5fdi!en9%4jSc+5CMVFx`FJKnNn>dqrjk7OI=>W6=MjI01s&5mZXBvUk`c9hoTR}`8pQC)KN?Hr(*OVf literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/PropertiesLauncher$1.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/PropertiesLauncher$1.class new file mode 100644 index 0000000000000000000000000000000000000000..473c5b5b78f681cd9ee880567e6f5471c6807d52 GIT binary patch literal 266 zcmb79L2kl83>=rxKw631xN_jk3e+D|tyHN9BwnydOb9IN$Q#0MWGBZ?sz>ro7=7*R2*Vw^#}x4ioN;oK93OwJJ{-K`4CF1--OHh<}eExq74o?dZ` zA{Tnivnu+WYg*RbU5~rjdiBQQ3PWVZvMuj6LnxJAV+hYXMb6NgvuwUp+b(diY7{Co zlFT`#QCTyDCFA;F*ehEu&CLn3Z0+y`+Y`I@t%}D5gSKefT+CMt*X5M+AduyXaH?E* z7I$+-%{I$i^f%&4?%Re(v#yFsh8BNKhUruwzOheIuY>mcmD%(LfpAHjVe*(53@7rQ zVQxJ#s{X;KxXCaT%&5tZGg;XM<<&65L?D}{^$gJ&vr=zrJnz(m$*CvQ!p_G0p-p4Q z&~OS#4O5uba1yN=vY64(hE@jsh|(ef5u}iax1|5ts;VGyEd=2-QftzDhBnDpuNZbo zUoLEN(^GMWAsd9=wDku@Sa65yrTE)Zxj%=R_v9<$YjEV~8~P8u9O?vy>5TT* zCe5CvNGHq4whZh+`9O|>GxU$hLFF;p$(KNsfDUw#WdwAd{<648*$UbI!7m6gd_?#& zTHYdg5Jo6`12y~(;m~`^3;l(??qhfC*VnNL3B9;L=ocwFf>3X0mbHQC_SILMA}d#v zbXjw{`;Z58CGpDyOZOL7e(!pmsK~GD8`Sk=bPusl2>X8A_ahRT`E28IJtYrKc}m_@ k8dq=)XUX=_Q6`W-i>h}2?m3SiDg{2!q$@8g78!L1%C01 zi9poEAK;HNo?8a!w$R9z-kx*Md7ksy{`&p>CxAgLMi51B1oe2L!-zmdf0#4_ItC-q z&?|+ZI&@-KiX+lsRL7W(r#dDWv|YistOJIDj3aV}yDKa^w&=v$J_Fx+`%d?WAQ}-V{SqBC~Don?}L3bH=JCLr*8y7(#Q-CTD2KSTso1#^^La8W*NOfLL`ox889akt zl>FS)G09Nl*OOr)5y)%7bYI92^Q=c4^D4NhLA5%J>Gb{v6d?iek zfs}aDQQX9B1|tZuY=@#~Kw}g$n2ll%^HJPGoMAZ#rAk~^j2c7Z<(9nO*ydSJ#{xq- zh^FdHoi9Y)Kf6A1Ei8uNAipZ9(wL|Tx#ola@60eByi3(M{W;Zh+*_tkBg0T4891qB zy{3(ixSlCI_pRmSDfQq$$`Rx`2aZ@-*U(QtfO;_8fP$EuH~MYFIc+yc8bt3YUo{C?>U8jjM^_`px_QYV`L5`hmgY2sN~VESh!32<}(nq zqMamyBhn6{U~;-kR3FGjQpJ0|Awq zUlj2Ria74$0o`|#bq$oxX+~K#;Zccgp14%H(o&QJyUgGW()1y_&MYnr2*u8b@;)e3S=eu`i?gW&-J`ddGThDjSd)7O7 z`ilp5645k|$4`oT4PNi33-~5K|B!Far$hKh2Hzt0Tm9tYAIsBi2H)-{KljSZ9e!Ny z%;%r*2AOh~yxuJxKb5DS$>kn{e{S%-ej3L2nQZ!bBX2T!v!7=2{U$#k?^_H`8Qf>` zR+G0$!-Ia_&JX!%EblOQr=KQrugSaQzT4!7O@2iBA2j(#mQ8F_lv&(HDmLjDT{{35?3mzNEGMfx_$IL zernGxGt^W+-K3^T z=ix&3bh#WM-81BJBv`3t%H=3iRZB~asbxUoB7zh57dzs@_jq)NzJ7-cNn1K~B{uYc)ytW4K^6rYthmVtF}1)>|Si z&8BMctEFlg4hXTT<$iixoe2D^RvB}WsZPc^+$)Q%kjp93cdB2lRHyk>NUf4fTY+j< zVO(UZL)2<{0_G;FHL^yBUq#gE@_L4;I{m6kMNJix6}k;|CX-bkjfUfMJ41;?IKeb} zaXh>_a&}`V+13$>uBnaVwl+LJ(wPj$nF7vxT{IbAmu~cR#@4Kn-cb#wht`IwdXkaO zDrv*~ss`Ox!{lwOt#85#_L$BP`kIq*3_;(3xv^*>8Hy&Cg*tn}7`wQ(Wg%`07d6)5 zR=Z?DGgHCbMNRYT7p!cmmBvBNTf?HcwJr6Fu=23xx|WsAt<5cUjVl)~S+uxrNlSel z7!1M&%&VJUyR@NYrL2pk2D=Dth$NCAA-_4YCK^ii#IgOve%-V7r+GG}3|ziw$-I@# zb&G44)V3^I!c^p%7Z0xqpIx;$lmy?R80@cWT-?&Sa_N!=>_6yadt@}6tU?RAy&bVG z>^#tJkHo6L+%Venxk9CLR$%x2kxND!qnRbl!&5A@L$=OVv(kaWZ=-gO4 z79G?OiH4hcx>kkbEumGNXbCjL+CrVnLh*>aJB=!QHkfEHt;JJ!c3ZeR8How`-egAv zJ5O(j#n)6NxvN*bz11e|6U_*4M;mt>|-aR_pQK6@DVlAtL8rRWyvFO7HF zy2v#7%NKC3iStDgm;^9O$OiI{R0Ir94K%hend?b{@g&kYPyuuR*pgR;#grT?{2?ta_ z%ESZl)22aNJI9C=w#B--Ld{_;5lV*J^&+CKIoh_a+txTkon`Q`Of&xl>2xL*9&pUSP<6ggfgF{_|n_|s9Z5@r_WJj#st=K+bIUI%Q9Aq=x z#m53y3-s2tm>vXqmGy6PymTfb%*{Ku%XE z8d)7q;2@5X(n32u6t8M@dO)w6A@!Y|;WeR7c&=pF&5(lhN}41yO&~H9L&1S&EUYNM zgBQRxkXDWiREScL8EjI3g++i!=jgGPAzIJ`N+Xr|?EjO8*n zbBeFG$G}LUc2y$Q*^|_U7S>rCG979%)jIp8qo65YgD2joR&|LZnlzIgQ3#(71et?{ zHI9HX768J7heT{=C;+n{Cmufff2DV#YdRDG3yy~UU91()r6n>-$A5*+5i(M!kr2nz z9)USD#c|t*A7ZPnYXw7{!!*DD?5`t3*-*R>Jg@dXE}pvft4VvHv@-{*+9cDkZL)p~ zhoU{*qAY-(xC;2o1Nt&-Xm&awB_<|gb0Oi*xuFCsdbwMsb2~!u=J1(4;b>d9#%=sE z#=w`*iATm1*uKL(4ToFR6Y10r#);}(UTu!u1r0X3Bu^4Iw14ccQz#w&db(o?lpzdt zuEZgs?nqL{tOt+lGC`>a6f>y=^xT})*6Bp~{$?GY&ex&Z2*+vyA?e7wQqnPtKBdnP zARG+g=}DIQ2G<$tJWHLgzG>0#==V&8*}Sec9uKXPaL1y5(z{q(U0~5i^e!x4c2JfS zi$11LEcUTss0%H1k-FGYm#A-9?B@cD{zLz@*x~^ePZt{PZ8W1Z7ME$9URSps&?XBF zmm2Cai%;UQ2!U6JIul__eOq0Qmw9z_mM*Z=ccjPC3prMWY1+X!l08M5H^80k^D6Ch ztzhE0J&AC<5}J3OY`?-#S6J%1JXUDB60u2^bQ^pQas&pV2Hk*twWYqNu7ZbfRz{qP z^rO;N;et?icW0z6B%v5KuXMZ(WNfLcxemILJF63sri`_C6pscx=f`@Y?bXGWx<*}T zscY5uk+4|mI{M5~*Q*~G>IO^QsCq56UfqNw#!^3I!%{b^A0gf9Pdd(}Zn4y@>c`l1 z;;Ed7Bp!;4n(vowq;>yqfQg>|*_EY&A8 zZxv>2Q+H-zC;+l}1|JET*nY0q@l?gql@QT?Pdx}`lv`@MddT97MH9G^iI9I-YKOYq zQak0uX=K}hzGp=uXsKOlcecYe&IJgF;>n7+0$-+JQ>?hefr9jx6vyJlC9WYQ#fk24 zTV!=4+-~s#Mo}k&^Q<4Rcrl*ECTV%!d+H#DC)guT(v#4|^7}l?)L8k?l zdQ?4@17h2h8tQRN?NLwUSd{~YzA_AIAcB2TJ!SD_{B3BhV-nUCm%!eY6t9lQx{AZm zwUKx%+Jz`t=zLo2PNCD6#eH=#(~$?WIO!;(?(FVPly2Icphc|7GnRT*J%AXO-OS-k@P~01wU2)U*a615J??uhQlqF zN1EtNb_G0gxK}Op3-wDu<7<}sm3rOcb$pJ+Q7Afk->}r1g3v=8tCCS>uwF+*wj3;u zaW{PGSC2}c-%`I;Z&@5?pm@?(PqCwP$d6&Gf1?!?o;7Z%w|N{CwDOz?ww-Y>W;h#H z9T$p=!*&>9so$#K8S3|z`h$9lsp(*=9Dt=?QLq*6z4Jfd4um13&B5ItE%hh$XNxc3 z3uU#xh@CC7)L*$y?DF5l_CYjxOIzkw%rw;BE%gtvZEf0GX>Xu)FuT$X~Z1YoTdpWmN&z1qx ztvWzy>4?Y9a%!yFFzFDz9!w3PiU}i~aR50bD^$3$qb0aXkJQuMNh(v#!H$v!nu9QR zaseCbBA~u`T{Iaw+ZAfrV$+-2^=l`FwPSs|dNMLgX>N@lr5+>%cD^Yr`lg`kL#O)hz*#-0^qL7%XijK$ks!jC+^d zak9}!H`N(o>h#JT5b5{@nICglxAcJ_a1W?l9874MCw5$v_AyKG83k(> zIziOp&QM#pBPKaX{~gop#Q}T>7{gJN6e`>&Ne^&kX?9aKlQEMqy9sI(iLQ=`Ho=u< zSt7Aa7WJAXd2O9BNxud-Zf>0*1jH5Plp^Y)Jzau-yAEvoYkl0TkTD0kE3i+)Mh|e$ zbP_q;p2a*T@6D?4X*RpXgbYaFWe&ICLi0F4$rB;*z$K{44;U_JXg6UL84=|XV5Dj zU;yA94WCu7zw^pBwUV4Y4!~-s3A~DjyT$l1&2t|#2gmNyx(hjOsxu-e0GPC9=n`(g zS=34PYBYZ2175l?>;kejKW=}FV-L|oBhlI<6mk_xnn2;0G?p_Hvb~t%@}aU=w$Ii= z=PURC`)i5g$3-e%rxJQp=|RhpSyPuTbWEJ84ZIvJr+kW|EjsvmUlD<%@u&IXd^H@+FO3agy(aV%p9=|&z-6fdd}~f8N48(q-$^qcl^qKO*`Tu65IYOM zh|rZq6VB8z!FkEp(j~CH{pQqTj^&Q35Dm-72BzcPaCM0J`ocK#e`b8mK{xwKNr7$J zGGr5Vmut@&kOrM`iy}D3wRu^u5hOKYNp}#?mcnf9FPwDv>TEt!V ztV$P}MdfqPm$RApC2h2QZCIif4nyAOrVpQ4Jk*A0Mq_X(;y4F`-qN`;bPR5;!`OJr zdLlbM)yL8C5meO|O4!N7q_42GZcQ}s{kmIAE5{F}^~m1c#W9raL2tB%4y8j#;b(vY zDL|+gAL|Jn6E4)1?)y~pwXSJ!(f-v8!$ufY4?UGM*( zQBsb^e(&l1-p4y~Nj#5|WE1y*6q|J)iq)=h0VzKH{=~ zN|9$PdACqr*>>`^ZYHCT%q^6UH-Bp%6>K330|%_90c8(R-eww@qCsV4DH^J=5nJ(fG`NQb28x0y8nvGCy!Qk~e@Ww*{v$p2U=jNy zW#q^6dh*dtR7gLhVe}&!O}9`f-AZM28%}gP9Zh%8G4zuR^&r5e8MA8G6zOW}{p8t8 z!wk+JI+VQf-M}Gx7WgD54Q!{et$}fY;;nS(RvO<&6E>n%X^#5zh@a{`EPJ%Ghm!9O z7zJso<3Y6vUQO9f6Cut?fypT<36ut=Y^5@+C@)|~Ns7uF0~O_VV`Eu)A5}J0?4dVB z=INPL7*}qOP0?ZKu_{tD75}GgAgkId4@KTx(w?Hjx6 zohKuT@^;hA6dhIV({H}5R9$Tp8GC>&-CJa&sAlXng2w<)PtsikALn$@Fv~JX}<1gt?an8a#5=r=<4M zL_B>;m8yt~aDE?F84A@@@)^bk8C?vJiIza zmIe0(x^1DL*=Fu2EKKxE9QidGL9f$TdV?m>n-rwCTv{|WeKeY?4`gc*?AeGyO`K@W zP>_aiDR>fVcP0oE(k2E2^_sLX`avjb2nLSRP5Hq*{hFm_IG9VY_W7{)g|PNxz`XIW z>S=3)^)i%9bWwuR+<0t{uQ<;3HO}@%FmQZ|8pMjYwfFC?6^+b_wy;n@WPBKM7P`S< zaeXk*sEM|MULktJz7NtkMtg~)%MEUPH)Y#XvZ z$sV>oLt4G-u;NCBfJl6)!jmxj8W1T)`3Nyvkn)5^HyulI=zt|@?j>tGwY0+8EZxZc z3HlfWeL@r9xysbWXcQuF5m#~UR z_^|D?ObA`BP2P#UR1C6On_$XL+6asGFso@2qXeLNBNeK?KeNjzDf=djFq4$GXU zgiBxw?DHHdUT(CbsL;|W2A7GV2KUk+TtC4u(akjc@y*UYDBp|a4fI?Ok+(LM<8+Ht zbZTHFAe5rh%Jl&o%5lJ^ia;nut8ntR8Qx*uA@t;}G{QS0&mQ8JA>hHVynE2c*P+jI zfIckWeiIqq4dnIA&Yd~-o@!riOObCE2+pIKbP))wrxtw=Q(WIKqD%DM=JGOlS%TTh zgMAvrBPf9TFdhlxSVV{NC@O(uD|ieY0ll9Io*u&`R1YOQfs64s1(WGyyoY%L#qqoj z&lll-1@39797^->-LMMGs=)licq%9Z(=t-IUdsa64_(dEFxQsK31U9ylTVvZ5sATv z0}4Patma7mn3Vrm;BX-C18h8*QQE@pqd{b3oAAjJ$D)iBPsSGb-GBqvn?aZuu{nY8 zR$AQs%XAH_A8sBRjqQAghptnlG%04>1 zF&H=_MV(C*J7;(So?&^zytmQxieY)v5CjzY`lzegSL6#sb#OKuPci*ul^6N8QMaPy zm*nw=eb1C{BmA--mZLlnwcE?Za(H!2WNYJ0GWjT)z}3*cqk)Clv=Hx2TuaNjj!xqR z`fz2KGl3@QBZ==>m67%;o+-zK6*)#?3VW(`Hvy*KB%!Re`sa3!8IcP zsUK6`5Ib7uS#*hf19Et>83+=)GovgJ@1sOx`5r1S4NF1B|@DC{@JE}jRVP|vcTHFS$%Z2Mx`VG zfpvX!&Mp_R0ojmSVIohW0emuz;8R`bDsl+Pr@=fwgD!2rNA%wwAK9_3c$)ihmt#zq zVB*}yvcNaMPKj72mX%lZ(Rn$J=X_`Z44VYGPyrWQbkMRiW z2=>UZYC6~J1j`4LejM1Zkkphw1n(f8N<&1(*Fz+BXo7(LbDCywQ|?i8CI@*b`E`KJ zQTPZO8_UbRQ08woRd{#M1+AXIh0Q6t2+tR{dV+YoWH((XzA4Y{y|lU2YY#yKhIn?+ zGBmkIrsy)6gKZ21F%#%p2&@{Y5qDc@Y)jA$FeRZhYoQY7(tQ2~HS+nih%eHdm`y&+ zBDk(4n6)VLL{KT6jG<*YH-jg@Kb~3yNZ4;NFXd$}?$|BMo%nMMseK^Gjz5J(2A?R_ zu{DDKF5oHo`IF5is&Rm4lm!{E6P<8HRD7umTJDJIWDPC1lf+M&>?KtVjsy$9qsyP5 zA;Ca2@a+^`-iT!AJB^UUYJt^Z6|k?>Ubk(%!U<;r-^D`_f-xIki;BD(G0cL)y|R~% zbRLiT^6B5(Z~At+sulBwc>3t-6kQ`p)E+uQwzw7m{=UwjGTDoef!311b+S$#E*j>G zit;vYpgfSAqU%%i1ACEb*CIuEdq@)a{a3nSzm;_0a~VBPFT;q~{v(c{nD{#|3RggP zz6%p{6*T*51V7i%p?odX@%LeNe?ZNA1D(h>!Uf*|)7uMkxSlTKTj)leaojgt^AaWp~s1YRJgfT7>IOtpNQGQ*<+mG~zBjMS0ukM;;1_le`5^ za>KrdH|)Dbtm3WO1luZJ38oQ02*0=;>irNc;2pG-chV`mi`MXN>gI{dew5DT z$26lQT0MmdVG`fPVHVI7Uc((|n*>iPVSq=D=djYG9+*tjp0pX1dX1h5Gw6e-LSM!p zjw0{p6wtnM3_B#aRXmLpET(D4*?Fvh%R*T_T=-)9#jOz7+MJ<^(tu*+AwvWMafmA~Jgln)NgS z-DeP)JqyqDJXP}x5Z;Rv;+N=jeg#48t8^Csf_nKix{Y6_yZH^em)}Gs;VpWd-`2uh z0x^W(fo&0jiD@0claA?7)Ov}}&^i#Hr?fCV(C}R>NtG8tdBmA}H)vQ5AowyKPmhOy z?V19zlrO~N+40b@Blpsg26yhI8My8z;VwuRzl4I*5T|}3a3f*v$Y9{7NS4>bh&sux zol<0LaJu%z@3?IJ$jpI8>SNgM*GHa!=UB<4@%t&PExVi#JPCFu!9xEmMfWt82Y#NS zd$C)2;66O)q;#WXg`3<-sU5}q1uFDc8pVHur~HTB-cCp-WwxKBIVPdvSUywusqKf3 zmPdgrW`+k6;^QY;4pk3<$r8{k5POYKxe*!KdKv+6Z4ex%Xmg70PtgOt$bmL)r!B4G z{ZdWkh-+?kB4XXq*DCSP)@-O~d-wM-?E?gY{{o8sgXrbIC_{ckNAqX;3=#@s>&zJz z*eryy&w)?x0Ev~TFD3abN5+GsY&l*8iaf{QvomLs+6#W(=4kB002Q)hXsk{ND0EXI6cjNh9HGnp$L9{~+ zrdKiV4OOV+u@Hu?3t5=p2Q!hzoC_^9QCA#+xJ=qmd(R? zunT_9>+JFhcr3d_p|Ve+Z1+@7*$z7FAZHNz?{SnkFSs!nu#pi6deC8mps_|5=CZHxdiH=m0X}&6>6IGBp zRi*22(ahnZwvE+?GbnH92p%yB#`qHc7LFx0sRegA;Lz=K2y*488-h@oXO5TavjQl?uM*wCNj9!o43*%_alOQb1VJ&etJ%FwEO7^5iIMng;o&yCQ3pVqWFC=uzv&k m6r$$e;65J9y@d~EG}xpqxWA18Pmrus1sj6ow_lh+W;|{A(?=08JLKH#BX=qbt{y1xxK^iQ`A3! zAAE@)`~m(b<7u}jPLevBv_1FS^PKaXp6B+*&u`xWRPZ2;6mICya8t(&Zt2M3c3|Dn za92ZK!yH3OwQWCFVwkUcvSs=mX}hgAk{^h-p4>MZo~KO5<4qyWT`udq>soCgs|0*# zyS7?oDCLJj7IqjCYhF_@jMr^fY;_MBLcZb+hdh&Y&*IJwmv*r3I}-s#2IHCQ3c2QR z-xstrhpCz?6XPWBbetm%_sHCEl{{kj5Y4@-Y{#tmmTf;eQo^rBmgUlF+lRue_1?L# zRJ9O^8!W_-76HpGngv7o4ESV-XIP2Ep3a$JbX#$2f0K9mqtLg#uC&BsI~Z2xgdi67 z_#vl>Zn&1?`6QuDq1s+k!@Pk7mjul~%a4hA4p)K^?8f7e!RhNa;TSK;*^;^lyN zB!z+YF-!kE4GibNGMPYi^ec?fJpzNgqhzhpI`HUo#ZO>!Ul98k#*EQ3MKQoS#_4&n z7ljNaX+`m2HbxQWX|I>7O)+uW%ND;P{uzn)7$qx7);lEGaq*b;;s`R2g>g?Xg{Opm z9#)v`VSiW1;u5kUgDfs%nsQ$uWCF1%8Y-@m9m6$T4}CM#=>%ERw3DKDa803r3#l~q JUO+LG{sl{5yGj56 literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/WarLauncher.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/WarLauncher.class new file mode 100644 index 0000000000000000000000000000000000000000..da1f7c037ba065a41440afad65afe0c782c42def GIT binary patch literal 2960 zcmbVOTXz#x6#h<0K z{s#O5zVM*1R$0he{s4cJ%kRug$`Dv9mOPxj&pG?-`~D{X{QKA606xYq-RMV2E?;JG z6jyUNgR)$%$+Lwl4q;JpOOm@Txf@w7l^ky3E6FV@SjnOXUuUt3TMBN=!>e-nM!~lk zd?z2SW$=9lx@6ZgFfynrFa^|-ZJX|FUH3fG6Hr!)Gi#-Vd4ch=j;n8( z_Z|1Hw(dB-R(JHO>1s{is%z7pVOcXfzUdVNGS`YXr^DyHk)pNP@^qzAtO(>( zYsr0dnDRF)#xUB^^A+7K>rLC(FkO1xYk3Q%=bP1O*VwSOO$B!Zx{9{%?g&f{chshb z&$Q_IQ1G%aa*ImLP|1Zi)FE)7;_JrUYkDIJ@o2;G{3X{hOwS97wxs(Tkzs~@aJamw zZ|h-c%9iIBWEL}#hZN{*zZV#IIh8w&Ryt?fWT*BUMd32Dn=L*t%!Y3{wx^&b&|R@= zw(d7wR&l=F-8V5IBh1%Kf8MJ5rn^@~fr;UfeS556gI%|!TQ(Cjd^^lQUAJpm#g~&1 zCPFI8E0u87Ont7i;3Pvgj&~ z<6RXe7Xs%yy^V(LWjJ8B1cMp0(%wY0PAx|(EyhlB zmN#d)rr|phf(V7g5``_kKo}-Qn)jM|oeg+68lOPv;`$~Z1hA9!eBJfE70YKcpX&@@ zZ7B|P^t_BC^g^#z4Piff5<| z`IiIe!k~l?a)S~<0!q{fC@~|TL=4glgoGEaA9AOW3ev7qPm%nSOadQqO$Uc3Fic(z z1u%kB+z}*jmaBaHE2R^plc%2{CGZe^WV!?%BfSgdQEQXgMfY#Wx3*bsA3{m}j#Tmy zUnc{Ld8Ei|=*AcZFhTw20_y{zg~&Q>QD%(x$0@BKHE=9>g)qT?VG~p&omwW9PN}Dp zr*@Hh1~my8SZF32smq}dQ?Kr+S84V<)qf&2kjnKOE|B|_e2VlUU65%ia7XwhC#_Bf zcR(L)9(azPRpzsI7kz&OvM*9P7fWehWVNOFGK2pNS7;;Dm$#~AP)h5_z i7fBQNoc9TQfn%hDwA@1~e`ok_c{JUPZPNSc?*9PhAM&pN literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive$Entry.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive$Entry.class new file mode 100644 index 0000000000000000000000000000000000000000..478454a22b7bd9b65180d3a563ef146e25aecb4a GIT binary patch literal 333 zcmb7AyG{c!5S$IknOu&*M^GdUD}kt}!Xpw=1O*+PbC|=y*l6tp<<}_q06q%gBk56^ z9ci>PJ3HS$pI-n@ai~x#91sRJURyDB3bH2bjmD1z)tGdr-wfewG@b=%IKGSZ&9h|k zBgiYyLrCm`elo(#WF1dpZSCbcnRr1cAHq^LR?8=-h^hzrX3FrSg>WzZ8 z%HtcK+Hk!sR=3_8xpF#26A4GHF+1%WzMn7hCj{Q{LO~#Oaxp-sn_EB^$k;>CGEjeW OA63ROZxZ?#6#ZXzmRz;~ literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive$EntryFilter.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive$EntryFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..b01a6337ef05eb373ee5ac57fe8ff97e23a1c2d4 GIT binary patch literal 399 zcmbV|O-=$q5QSgyGwlqh#51^n4V{>{ffX^DkeIk&=dKxwVQ}a+)eXd}x$poU%Fv8@ z0NB*4m#X?+Qr|zHUjXjVQ|KsM64b_oe8pbjiqL+vK|ToGskJN*mGPcEVbp(iQfU7! zr7f0XHoSN8rsvKDT{*L0(MIxBxnn)~)!Q009=sB=ncGUvPi4gs{5K!2&CV!X6UJwe zBQ3BHI(5#!>m8}OGPck!^EKyzaDNt_pijI@2!uv_EkG?o6DoEMT+}s167?qf7BaMx KH11~TCg}kvV0H}v literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive$EntryRenameFilter.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive$EntryRenameFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..fb90d00e643b79883946e479b79c09a25cfbfe97 GIT binary patch literal 506 zcmbVJO-chX6#iaqC(c;4dIlG|F(A0=Y7`5CAm|Cw@j0f(WJuD=oW+~C@Bki4jH4Sx z74c^IoSsJ?O>#6e1MYZs{wY zX~W6+7vJGRt(3qvq3pB%tCK6X>CD6#*%Nj;ci(4|4+UwIt>xu>!Br$2|4WJ>|A@;7 ighBcuKtsYBM5+c@?_!QD<=xZ|QDBtiX}7>Q%ijUL<)8Ne literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/Archive.class new file mode 100644 index 0000000000000000000000000000000000000000..0b1cba8d4fcc04db0b7182d720caf04389235a17 GIT binary patch literal 2419 zcmb_eYf~Fl7=8|fY_cpZghDA+n%Y|KU3&prgH@nZ(F80M6s?y{a!8jhyP3@f>sLSf z8~hFUCCu0v{iZYiCmo-&ySYtuMi@Wjyu0stFVB13{PEY%zW}(6eI3JC){()Aj#WHN zVNJ&)e4yb&4eL5IET{01q93axua1I_BsP@JrjAcg(C|2gEe+cmo@m$+7+P}!|GO>e zT8HwH?F7;nFxFjH`m2srtI3*%U4i~kD!SM3sX$-I5J)cBt{prO=$)FTTw>KLOM&xw z+m##j!=m(`SVf1NOx`P5&aUO#>OE#Af@gM3;8x!AD`u_g+iqpwCysAD|G8Q8yufrk zt1Nxf@=MR`BWW&2G)KP`8SMCuz~Iz${=ho2Ojicx&Q_jx`r3<0t`?3}Yj71jff$f+FmTwl~8%m`Q+lDfcShtyh?Z7HM zFId$uMh$x!KBw`(iyR5`$QJ@59jYy~ITnYh4$(HDj5oo)3P!^hjFr-=6t-j{$GU`9 zJ;#wHl?H`-+pf4)Q1@Aj$NwU>blN&x51SzOfcA%oV}r?)<+w(KvpID(gHfC1;<|=` z=j~cRFW>*a7Ec{;7;1*0Mi5)U3LKpgS?Ay};?oa;zU|fhk{VrB)`*jTQ%!_{*Kpau z9o%IX8hDB?*<9>SKbQ|ELBm%DzQ#8KSHb}b`*@u_Q?VS11+vwc0vFp7Q6I0=ZHJR7 zFu&ntCp)Z8W}9=Am1?tOYgJjY_ib6u+HTf>g`zr2224yUh-CwB;F<=)A8vc;@U6wu zFJPWBJ=_j$i<`v*PJ_VmDUC!;-dQJs+?i}dO(U>yCT)RO1h1Zd( z(NN%(P0^Kx<{FA}ZF}bWW`_ke#%fhA2V5z|dZ4z-<*s$1_F?;$Gdb4nw0*~|M{B#5 zQ)g*!Om%F$c<06g-n~DQR<$bKG8^kZX~ca<99{BJv70NT!$Vts6`rBz$A5)$sftMvu59Ef!bQnjn8GyCXq?I!%o5QY zZ5ZhJ6C)btHQbzNp&q0hXP2i!{ghP2Y!J-32F@SnGegJZfwoc@j4_=H{jHGm5NWK1 z7)Gg=CjTvZSMo-TMtM#`@ITFMW{m5Lx6O<#kh6%l$+<_V9^B{qJIL{=B@y2&@#bAT h=+vdud!g3*7$qI2?+YyNNHUF!q+_I)NXL`uzX6Bfk>mgX literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive$FileEntry.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive$FileEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..740ef37a6dec7a853de100e24b905bc31b61a42f GIT binary patch literal 1310 zcmbVLTWb?R6#gc=*-g^5i80=9Rih@`%hZa9C_;=Cgis%pKKLMPl4&}1yIW>A)#6|B z!D?ecMDW!gC7#(VB@IZTEIVh;nf<=+TxNg${`LdF3YPP*Fjs($YkGHGFEU!R|2C>>>aGnQ& zP)*;9B0)#Zi8=kHCDkKNYL49#vGy5Cwfga-8D?bkR4UPlL#=Pr>aT}@wPetD3GnZu zF1!r;sw0M)m9c3p>G?Z2fmsJdEI7!c;9v%hjYS6+aM8vRLt~Qa#KNiCFJEOOl;r_IwW6faT(<0M!Fh~ET4Tc;Hly&py?=9>8 z0i}{|EBPj!7g3`1BzbR;p$JfM=LcZ!Au{g50EW9bfVofc4B<70{$`&TKNH6noWcRU zAU%WD3O#4Z>YdiiBs;BYkjgonPqjE%MrT>~0Olv!49Tq|c$g46!w*tIrbkW@o#+Z# z4bExsS7bkq;lGdIb4U0~xSZlg#f@?CpCjOG3eMn4B5@UG$d)Nt3%78ZYz}qITlqgv CCP%RV literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive$FileNotFoundURLConnection.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive$FileNotFoundURLConnection.class new file mode 100644 index 0000000000000000000000000000000000000000..293ebfa45c6d22d4c87d7d1f1b235948f530ddf0 GIT binary patch literal 884 zcmb_aU279T6g`uq*=D=;yVa`IXj^EbIN*amR0Ihv6hfuO7JQs+rs?Q*Cd_VX|CXQ> z6!hI+p+5LC#CvyRi4|YOmzn!<=G=4d+|NJWe*|zJYayz*TEiHw1-KrfjO73~1Jng7 zRvl}B+15*SqGY0MPqs5}Y;RMb`p8(5Jr-D5FVa?La{pOt^H1=`0Z}zwm#C&%#_HX{ zaYy^-s*~j8E>_8b@`n9ku#z2_RA6b_Bzo6n+iqaH#NBk(>Nqpb3Pd|(`(~ojR1>t_ za=s_iKC3(QB>T1VuVlx$OeRiswU^4rN9IJ!t*;FOyoj~){79Feib1(<#w z3v@I61445y`hfC_##@xmQ29iD3Cv&3bKi5`sK5<*7b#nz$Ynxa$?;2=rkiDt;RdD< F{sav`-$?)f literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive$FilteredURLStreamHandler.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive$FilteredURLStreamHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..19a1fb0111b36460e1ca55e13d6d9210e9637bbc GIT binary patch literal 1868 zcmbtV+fp1w82)3Il`clAe1LcnwR{}Q^6S|pfmJG1aML~i`TI{jkN^4QR{)psbvFiZ!Nysc?@2dQ ziAzXRg+t^sP1<(UqktX`DUh8FS$>mr>L-w4)n#Jr3uV3QiS+I+$y!sP;_t|H!PGKEMeKg3LQIG#Z3om zSa)y>8v^e02Be<&fjb*}zJKjOqGA(Z)57NtzQ7inaj+^5Ze!8GIeaN_^Lc)c7(CMz zwXBl`T@Ow3pOsc%_(+*S^_9Tt34$ImZNmo>Y@5Vfdn*M7QkJjX;>yzoawPI*5v;08 zR%Noy{^eWqb9fA{91}jLLwcTyx$+ZS`r--pwK<){Z%WO{Z1%TB3!F;y##&Jzx1T_B zABs;kTQpyfK!sJ4D|4qocU&*W>9`9F=8ONE{(cgdOcK{moJ2af+$mxkY;Etsa+{9y zrrp|C6zK7Em`Fd2Z>R@tRx9N@d<&)uw*|Tq-P~M(k;8R3Fs+PwzU|HU@8%aaxhw}}*pWhpOEGRE%=#_=leetr$m^DDgjcz*)>UyEe~V*mgE literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/ExplodedArchive.class new file mode 100644 index 0000000000000000000000000000000000000000..4ee050a9a2eafe4e47ec4c66f0830add7e07a0ba GIT binary patch literal 8418 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 G?EhbEXeX=y literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/FilteredArchive$1.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/FilteredArchive$1.class new file mode 100644 index 0000000000000000000000000000000000000000..54407081ae2afc1ea97d90f0cc539f4284b5dbbb GIT binary patch literal 1549 zcmbVMO>fgc5Pj>ocH_DvEu}#DEHTg|rEZH5f&c)4gO4fLn* z3%GDWqT=Jg58y{3W|I`PQ4glEvg=vTyti+5c7Ff)`3t~09%fc+W@FWol!}D4ccidz@_QOs)<~{K~ ziuc@R6iGLTcuT}CkG-zn7w)U!?3_TWFc`AyC(bIvlhi=Noru;5P=P%2LtnmNI9xh6 zO6tI~bQE_O^lH=+47r*gipD{&DdM-h8PLjXE%JDof+#^tR;QUY+lcgj(CtLF@_IKBZ!A zOvTDB?{mu8M(71mLM2oevKzHbEZca16&usIU?U6LMh>oxRjk>V$5kqqv}HHO=&Uj1 z6{{QYu;XqucZDZStkY4XMLeZ=2+#27T+x*1v~goP7-l*`Hbf%-T?8tpt#h9J5WG^X z4Ki~e{lKmHiKG(CEUDVIxaWz4?&&Js)DP)N#x_j^Y2}`gWZI4UpW)Qo3~F+W+MAZo zt3m>3rmCV|sL?-%Jbj&^w<_5gwNfe{ft8kzpq0KM^JU;TOQS)Kz#Ckoaefp$hf8EB z7zN4bq2e3?w#i3P6iQ#gzC$nnz=Vd6m?K*|Hcb5!^vq{+%RrG>gOEDGHck)~a7fzD%MB%TUdJ_`6K@6(jo>PqV*? literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/FilteredArchive$2.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/FilteredArchive$2.class new file mode 100644 index 0000000000000000000000000000000000000000..4d162dec69c0087692bb3e6d43b1dcbe01df82cf GIT binary patch literal 1998 zcmbVN-A)rh6#iygy0l$vLHt*&Sd|uJ0Y!u&5gSZQ025JSyqj)^c466Vc9$wwK8NuE zywybF&xH@*LmAKP7EKpPS2pR)oavnJeCKcG=dbTS0L)-14HY-#a4Um;jAc+nDT^}3 zvq)n?#cdUnDyA4RZEh8}Ov@K8!{CbTyZg_C&3DD)&Yt$fwuM`@xaSFvp}Ok04c%+G zrrp?b>D+6_-O+1~%!H!Yc$Qa(3iuxcm%V;kn)?RS0wZEvEf2KqTYd(Ad9AL z`b!LN$4-nATk&{rN}CMHs#6yXxmD8^>wCL3;Xdazi*|-q9fMn&+%=`#*-T3B87i@j zM|>~NkoSGO)w1?gOw%$5F~j@baoF=sOJDX3(|ok=3okx}F8?c~p46j;7}7!(*E*F9 z!}JOC`vQH2xt_ZGUlm9p8`$unzry+v@4SC$tFo$^+3mPg|)Nl?Lsl4MhOT==KsO6<~-Qspb ze_GoXhOgoQ!*X22u7q{B^z4Z+81!Cxk)%_udTAV{D&jviPDA)dHru@m{1EV1_hZy< z1cNFkF($h_!wo}tbZ<@3&6N$BE~LotCO)%>SO3o^yir3K;#P?p5O{%M8qWsGIh>)D{Bi*#qZ8DR9l#xelYoWtXRxnGPJBb3f_E4s zSs5oOmB0ri*+)8)z+Ve50}F*v_m71FF5z;(pnxkFA^TTJPlYn_P$e%DxJIIaQCz1v fN$>CtXtWxobs9RdDfvo=-+7WRkX)wuek%PNcbHz? literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/FilteredArchive.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/FilteredArchive.class new file mode 100644 index 0000000000000000000000000000000000000000..f8c4d1e2e496bfb937827ce54c5755370591428a GIT binary patch literal 3733 zcmcgvYf~Fl7=BK;EF{Y%6cABsFVsSyT|lvxKwG4#QWLOHsMPBrSzsaT(#=A_TW9(& z`~`m184F@(I)3&S_*zS z)M`?#rquAE8t!PA4nspqZDu04i`fX~a8C^%X_$}THQbNjV|)_Er}#|6=V3(gh2oYP z7Q$#nT5U2KObv?y`h;zp?s!(_a%N7Tc3rxr?FkGd9e2sdt-F@JwCKt;^P%Ie8Vio& z8CgeWOxKWZdfD1Ejj>>k^YWsV^-Nd8l0YP3d+zovpCB+=DOy*-b%i`)*_L-r;6Zn# zNbyQ96p8Mc6Q~|{GNwRN(z4CTjkN{Sy(<^8q_iZRw9L*)*HZgDvD#a<=*X*Oiw%5a zW(xecWO}o1R-n1NC%GawrD2<%F*}{4C&G!Xw7KqCj-Au6%=nQvB`w>Jpg`;XjjXhn zj2TabFRsC2Kzv5qS~PPEZ|6SWhG%7s73mr&8Jv-Og<{C9LSU(+=qO?ycd}VCtu&xI zHB1(Fo3kG;fh%R3oi{h|whFOL#mo$i4ovnHOIkUPXYIv~-d^8#_CyKq$T7uVqmYIf zPo`H>a@`N4hE)v=LH&%iWJ_p}(gpPV(ZMEpZBMd;H%b zR%~!wIk<(UmL$7|HG!y~JJY7kDzjfOHjk-rAxgZb(rloT&`!p{?owgli4MjF@*lSM4TJ*mj0>7TiLmW20{0G1xL14Rl zRZE`4$-jjj{ok?+(<9z9hqL@9?%;=V2ra5qan+)V7w0+%zSOfE&v7?Tjw;Sgv0a2> zy-!dT>w5z6BS|5g=h%X3jy)V>sAsKfL?60HITKvN1-!u>0emsSUnxN$3SfEUti%j* zr_SnPKcQ*|)jx0@;Me-}ejig0c=DJ%qmgP#k%nG?bcskT)JG%LmLd(m z0I8oytm}ECXPlLn5>KJc@1ialSXsY^ut2JB4-tXyaDfY5;8!$E@?2cnLt}{KNH14S zA>8}^@85fWMzd0*+IM{?YPr77h~1zg$1ud=I*OazB@RN+jW)c=6BWZm-f?y0dK*`$ z;ya`&rv{X(Tn&@bgsMN$rh%WZBNzXm?xQ4zaE-_80fbT!OQ41{AgXM6is*c-cNZ-? zI92MV+rBRC0rNpRMEz_NOq?Ky{dpl{6v7rk?jwY>`a;@v&|WHJ_PIiC5%54ra~rN9v7(LV5(z4n@z2F_OYH2G=t3?!J0u>VtYP_V0Kd0?bwl2G5cB$cykKrE@ zpFtA|Q4=4)hcbS%+aN75yRym7ZRb1RWzO08_51rz05#l8L&G)I6fzjYbqzN%NT4{5 zam;EcX((%`Fl74NDy*B9C!~fshKW_%lRK}3%{Rqkf0;plV%tJCEbh9(WoWE9vTL|o z(zLtllJ>oKQJED-&V314N%sZ0!u+g;;Dt0&qX zRVxgwcj#yXeQUVOupDL=Drts=s2IbAB8_x~7sMhu1DP@O!+9MVQv}|QV34rlMJ4EZ zxckGU3{=w8ut>@r9QkfI#HeaQxjqtZ@Mn#X=BOhEBkE}#oJjpYErQ@MO?S{37}AL4 za!OYK^&~R7r(*O@V3NM(Y1E*3oce63ya!gQ>>*a#NBoPw@f5Ww+6e68G__}Z<1F=O zX+}mqB%>WuI5z-%iKGvhFMUO<`~!)%m3<_?Ar;4GGKt|Y=qDd^I@o>yn#Xxu@SWyy r5tsb@Gs62rBz}v=M(haVS)=p8ri6Rw= zg472-fR94VCN2sgl7lVJcy{-kJu|cW^ViW204+3KlyI?vA}+bOj4Re$b#UFm4F@ZP ziV71mT$70;v^tULiTH!jVeg%hyXs?P-ivM&B_fFAwlbnGjd&@|`Z4ASq4ZRTI(bHT zRR4c?V~bE|N85@}?dVW#4tBfBypi32M{1qOm%)}a+Q#W%A=%L}!DAI0I#44e9KHxc zW!iy^W5u)UnM$Pbcl4gJ$yl1zakw(c%DGj0Dw#}|@UY&<^|mad5}O z87zA^i*pX@gmzY^=O_?i(QYFG8TQ1hZlBY0(BOkGFZXfP(rk&LdV( zi@jY}w%~8b?@!?mC-CJzcs?()@rCLAk7nR=I6vCu0#327vECw=ZjqC7a1*ymmEW<- BER6sF literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/JarFileArchive.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/archive/JarFileArchive.class new file mode 100644 index 0000000000000000000000000000000000000000..b9c39810ba575c0333d090f3020438ee810e17f1 GIT binary patch literal 8087 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 literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessData$ResourceAccess.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessData$ResourceAccess.class new file mode 100644 index 0000000000000000000000000000000000000000..008788eda5f213bb640627b018e2f40ed33c79e0 GIT binary patch literal 1341 zcmb_bZEw<06n-ugTDtCyZ8~u3rl_#ZRpv~VKnM$ChJ-K!N}PT$m(pQpX-z5fZz)Th z(P;MBA7wnZBaZ1l8E%uFoO7Og&U0Sw&tG4E0NBJ<3=;0Ec!0EwIT@=eG^~l=x`IiS zoa+MdP{FK_8!~hTX}?w~GfdUZp4;~fbH^~uUXMYmIF9L+Y~Jgcr0!K+ucP22WgxN z;pyvfg^wO{yDtb=(wVUZl}c{gWSFj6j#=w>Tc-D%w`{V=LAL!vhF9t85kKa-&7F?k z@I{+)nQ;{ruet`eo7}TR+F@?Vp(!xL|INz~&0CJ;7Z|QxL93E!(%AjC7Ii7susRO+ z`yNFKr-ehw8}{(>%aPD!r{B$wr=9|Bf!YX`ZO;;2T=;uyHbg5m#KjWNX?TRJj7^5! zajc+*MLgDU6Sp)>Vn)L(W@!B{h9@dzh#0o(5V!esW~2-Its~R$iT{)TqC)pZ=Mg-v z+(`I8dvlphu9&6gs?i${7ZZXsK$3U^GfB}U@<@nb9t)t6lXi!sIO+iGGeTzwePhBLG$e2Z#K0sbwTRKJb zQ{Wy=cX3_DZ9yH&0cHgX(Onr5sZk-~Y0c+xTVc>`fO#PUX6Vbb7M-88<{985?M+ylR7cQuj-JA%m0H0;bb9K zQe;N_kslCR4{xzrmYLBmK#$O715q`1DqeGhL4Q0B>ses+V6B$DD}vV#$2=|Cgn!I( zrp|XgU#%??ZfXT4bTpF literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessDataFile$DataInputStream.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessDataFile$DataInputStream.class new file mode 100644 index 0000000000000000000000000000000000000000..b015904914dece3779a00928d7714280d509502b GIT binary patch literal 3526 zcmbtX+ix4?690YcwbwSAw9O4t5|Tmy$ELUxDA1Gw>4iE?FC=XtlmZ)j)0)`cbnUeC z9PTtwcsVbea|8$paVv;`6rf2(5Ii7JF0Z`8BmVMElUsT|9f`!*;H3_I@8ba~3nmyS-jR?$A` zxRdE|$El_P2XWGr$zF!41Q!3f+wt`hI z+hv8*iOX=+*wMa~kOuk>F1!EwvR2`c<>qA{2zAL5 zwI$|EX==JMT5)ZwsIa>+M3T3@I%BL(#PVvTu(L6<^?@ohjaIDeuNRgm}tV5lR-F6ZSsp z>4}USiC9Hvx>Qk!k9xF{)G2hagB*5amvKM@NX0MV2g=O*rITaXQW`2j;8lc7Yh5Ge5qo))f_5x44$gk<=*0S zxzby5D!t=&Z;6Ux_bC%Y*lprzJZs=N6VKxX6Fuk^(|4E{#vT(d;sSG~AW->{4i5%0mr-4ZNbTy&)%cTvNEKAv1nCm$B`u$*C{(l78Tr>zwo(RNuFE z+YZvf@0Gp{8#umpU(QhJuMSKB!#2Dwu~OpiJRIzMPDpQpECIMh0BpT10HnEIw(Uv3 z3D^xlw#Z1@3;wDJVRDS?(JfHsZZ+2?Db=*l_);Rybv>?D6Tm%MR~KEZ3#B z*@GGxu3fM#nIYZF)%uH`OqZoP-6}b2Uhd;PR^=FHPchF~6HW|y^Xc}6Vn8q7&t3cs z2tkt(!aGeG99X?trV;lskXE>n@&tFUAWU6geKK_pD!Bmdrq2-i06ob?=wqq#2)9HQ zV4OoV`30if$L0~Av@=B(htWs`JWp2YpU?q;4W;Y8-bsKb_rKN^WYBz zVGJ-NzN7+~?ypMK#kD0s;}DHbQyqlTw1}p$mgWVl`X-s`>JFmxAvJsDd5yaNMKk{I zK}-54tI#?EXi|^6S!{{216z3)^5BM`npeQ!+r)>Veq#Y+RG;g91L4qYvU_F$t2gQG z`dbKVvr_ZT;m+^{tmCaZk2UjX5rMypacP~g$Or~;TW5G4ZJQ#=_K5bjmt9?7K>I`O zkxho!xqwxH4N>f9H)fNa;Z#>Ui+UyX&hX^lXhmi>d(5jl-5LFcv2Dc>yiV|CGEdgm z@us)>nHxbHW$!Up?<0b<%-)A+#Ybqz$83^WX6F-9@Kaiu!yrCG2A^XLU(n_va`=i? z7if2p4Eu^!7x4~P;q@*U)J@`ET8MBzSFOWbwGMODI?M%iXvVv^k0*5c{-4*HVXrne z;*pDJRu_>lFnEdRj3wqM3iw69?IpUY6ARCHXs!Ak+C^MT?rDhBo|J>z{*WAST~Yn* z*b$I$lyIc`+j?TJy#*t77G^TpLk6%QpHN=g72no$MO!uGHtfXxL05#K#dql|T=6?1 za5Y3FMUz5;=y!c`LVG9#(+XHeXG_zU9r swZ>#q)npU)vgVu$*yo+uj~lqIrO`e(xc=Twvf&_EsPR9lgLnqopIk8@Bme*a literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessDataFile$FilePool.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessDataFile$FilePool.class new file mode 100644 index 0000000000000000000000000000000000000000..29ac05fb0e17e87886ff1914156be23d2aa89ef6 GIT binary patch literal 2231 zcmbtWTUQ%Z7~Llc3<<+6;S!Kmw1^=o1nZ^LAZ>wGV?#q5q=MHW8DL3Oy+GXUv?bba+5iITPtqZ zj-C=|S~E<&B+%91dZVnD&dj`>W)(` zx_aTtoxEOj4clVUww$Zwx8}8?S1g6+=_o4@s(G3P**zs8%ApT6(*_z6E z%v*ZFld_7_cv;05QVKp%@hLtNhCEW5g?=iMq6&$PJV*taVh55&AX&`~GN zV}`OS+9t)_T@_zLEDGhqi9u2Wn)f0MPfYL?xb`B~w|+0Apa| z5Wk@vzccqAjQJ;G-kOi?2u5+1y&OqoK4u)lID47*F7ryS^YL%dyoV6G;C-|T{0KFZ z_!+$iP?u>G-=QtszK@O_1QK^M2k2T(>?8bu!NBli=p=jzXaLP@|KhjmZ*=1k%l?O} z|1#kd57ZF-x=B?M6Wlva;BWBTC!?G{1o|e&{qR3VLcv>?_Mcb%+uNwM&=JRXy1Y9J|6BPnu-Ovr0@NYX>@lZUe+ zBl73pLyyc;C+a8kCHByJ#JKbH*Sde-4!Y(Wre`1Qpsh~hJ!WbpBh$&vX24 zLj;Mr6;Z)=OtfK0v|~bqkrEM1v(Jb=WJM1aL@yuGXpQG6MOoo_p@HX>2A+G+{1{Pk i{0M#X3Z~j-NO7=%V;|llARmDx*oVk=l>ay4@cjoN-xuEi literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessDataFile.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/data/RandomAccessDataFile.class new file mode 100644 index 0000000000000000000000000000000000000000..d849de8028e32b76e9a5af6b99ae631b6f7d7806 GIT binary patch literal 3390 zcmb_fZBrXn6n<`A*su*RrSGvyXt6?Q8~TP;Dg^@6Pzr4VRI0UZk|l&DyG(YYjGuJI z@fY-y&iD_U(HUuG#IYZp@kgo8*@PsGj30s@_TIfW_de%2&pGGb&7Xh$`a6K@D0L%< zWocHVc__^z4Jn;{TE}UuYFG&k?~UvpX%txGYy~V7{IFR zH00-uhOCC1LTI5-G#}b_Q6ZePEVG;_8jfQ+3Vm~iYb33miko)JrcqKjJ2$^Dv$nMQ zEU~hjSWBhmmsg*q=4a;83M#44ldvtvH7s}CC{|2AT?i-yHi@s$yR>b5Zo~_ATKxlk)E_`WS>7Uc0AjR zxdzgD+_t%MCQacM7d<6*ycE##rYn*v^pA|bt`}p-A6xQ4!zSlarejyiS+f=wg{LE( zks5v-XtHU&#iT^p@De~_;s3FtpwI7S%^kPE_$v9?K<{0l0O4OM#@)bqX zg)gb7e`J)28O#=Kr#52X^_n-sa4r2%x!ni1JgNQ2J?)V4_;}Wh& zlTf(e9dbp(%Eyz%qM0{}Gv$1x#IkPWn8GPx7%f#CH)`2#G-F1sO0g&iTP*T03fSg} z&|GBh795^xvmG;RC?+0?gc^R?QyZicPnS^u2kHW%~`u*<(!7|vh;cw zv!YdhbNxzYo5iMZt0PXlxIC!(-J&qp5lq_wq;TQ@HM!DofYGZT!CsJgG4jrulmoQO z3lmRnmiZHfyGN-G?@svUC(u zW_Ya=>`EQ%H`0+0j6|#oZR`*9>?5=>&|QW8YV0MBeOI3d%S3E!4}sV|dNyL`tLWW> zFV?*We~b(J_Mn7_-y;$u6<`Vhat&dce$C<>5A?bS;U3<{hn!7%M58qd4WfxU zQPRRyD&<3*c*o)Un^1lY;~K6h@N>*3Wl;CzD}rcT77nDd8iXPZLJ{0xh(!K~9C{w{h#Z96p{V<;I?qhrqAc4j5u9i+nefCB|0X50w^-P@P^wp8gQ#n36Sl{xf3H7MLJ2m<7en_n5;6 zo11?4+x<9va}tY<&COi#wMY8!&G!$r{4WI$*-Y)0Je?mf+a-(r{1X$zS&U2r0;kUnk zc>&-UKGM;KQyNa=Of%lad-5}^qZMa$oWqF5*?GAfRdFGXybcXxay>4$3o0(EcweBo zFm-u;;nV!Wd|^%?vX~cWI%~UjFd`7`PhS;K#=Np6&^Bqi*7U~OlI72vOAaj^lU~Vm zuA06r*EOROtlAZU?4;+f{j1+;!8>t_dV2ubVf` zobBa`ug!$oG8dSo8&l?bSg(o?R1{TA2w&VP#?_xgvu|UuEffw_|qTE&pzRbWy-lDg>T#>Z4J9ZE_R>3XXrhCm+BO}mRCvv7vk-+XNu2fAj@RAa9GNeI9zarhT1_nUwrT@2z z1a^ga9MfIN%`9EFN-X{4o7}h6QzPWpcmJ<7OfbLdd$+1xFutQ4hi0ux$Z%E004V~Ur`IH2L&D$k{8 zSGcc*s1DUo-K9;UO7&`A--G%H>cifzp2w#%gHI8^hn8QVEp+Hl(EM`nA&*tzbhBh& zkl!IDK0?lpvfyLPbRvY7tihFlNTeiFk*+MnjMqBKj+IsjR0F8#}p%?HrNG z8nsL|ntkyU#se-IDL>Odgcg=BvuR-t(GXOZeO?Rt1B1qRDz)!BBs1BbeUH&{N=Yb@ z?-7eW=t(Ho&Lxy!Tp%c=O|%F zPWnQSoNy*VO0D;WAS3io@rDoA;YR*~su1p8QggiCA-$mw`zHE4{xekBBkVhVt38rr Wm=jz@aFP(DYWZiB|4dAd?)e8q1IeHO literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/CentralDirectoryEndRecord.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/CentralDirectoryEndRecord.class new file mode 100644 index 0000000000000000000000000000000000000000..f4366d339d4babfc329e6784c67aa073a5c46685 GIT binary patch literal 2943 zcmbVO-%}G;6#g#x1#yw^E7~d=skIQQsa8uXhy(~2NC@&v!M3p3Y+xZ|<7Po^`^rrF z&^P;_4|dw=j4yVkovEUA#=iG&>Xd$WHwLPX%)3!LEH%9 zb9^C>e;LFA7UiJ&7z%#h*n~6TJRCq)KuIUZlj)iC!c=lTAs~_h^@C=yY^z0kRxPaS z9(hzCoQ_|2&JAYL>BRW-LMkynGJS=++uPDhW!LpmH9F$V>g2?V}u!PHg-YHkb&_|1I2tlI+KvhkHpyVochcAvn- zj+ALF#mXhiC@$qKbxprzTC1_FY1*-ZspfPmmQ!stHmMeK=2~3S^m2KK3q75)bT(+_ z=&T`S6!r1-wXAMUtJwlqno_2w7G_n;kalI!YcCsRfy;XaTv4sqpkA~swJ>B@x@Mc! zokTG=scWW{>tR@lNT7R9M{h>X3QgInwwhK;4l)WS08Jp6xUK0W+hFws4r`XK+WLUx zaM&`}7(bJji3{}Zm$GE1Q;LFKT(Xx10!En%F>(T)j?Q_a(#*9rrk$$ni&25bCEX@i z%g*HEmbPqcklg*3j1C*hC0#S}hR$?cMJTFfud9WZW-}wcO1?m8zd3jAyGTt0;)*Jh zcT3N*kSTUpaLQb_G=12RT08bC+NxB}tf(8Rg3}LXM?HD8XXd0V$=sX6+HC|JU>91M1HBzwo!%L-PoDswFau%@60Q$Yzg z1F#g7VJle2hCpZsPA0p;&Jwt=7cp;aBBv6(0RmE=&W*y#P+oquRMLy&`*cTYCzhLf zPv>h(6*kz@M>~>l+pe`u*NH$&$Lj~_p!H1wiSXbKjI=7-&a-9|c{_HDj!MAwGJ*AM znOv~(Sr)mzZ_Re@MW$5QfUFmBFtUud&tT47(pWHTyP#9?hFWw!H!MlVje%sca}*JN z`Ht`tQHOVN6m9$@9HUi(=U%xciFYH-`i!Mr2YOb`xNaDcG(^D$m=_h-kE{QD6(6$M8l&;m7brqkq8rf`c#j7=E4!+{Z?A zj<$DEZgb+C_yrj`Z>s$nO>(l?^$c|acOT%?a|Gv}i_ICS?Oe4a-ymqRU! zKCbuE_HDM{o#X1=`v`a+!s~fNM=rNvCI?I~_*DvW5+^W2z}I&1m#Ba~ix%?SU*RtZ z?{V=DPI&v}f1Ef5DlmUwqP6tcT}7cd=;Bp7!<8@sN$1q)e?pb6F8}}l literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/Handler.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/Handler.class new file mode 100644 index 0000000000000000000000000000000000000000..7ca7691bf163637ec44ae2b2c8d63e80d14583be GIT binary patch literal 6389 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 M8tVg`FTjKU1?hryR{#J2 literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarEntry.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..666b43434ca3fbdad5dbd01972d0f6efee4e2017 GIT binary patch literal 2365 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 literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarFile$1.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarFile$1.class new file mode 100644 index 0000000000000000000000000000000000000000..24a06cc9177fa9060c848df49e1986c058db78fc GIT binary patch literal 1302 zcmb7@T~8B16o%g^r7O#7R|J(06}4(xJ{Aza35h8+!4$l}aN*swjAd~o))kcrbtglrj_Qzazx(!D7T^J9yUI5iLXJfsL>&x#?<3 zq1M}-b;$7QvfHsLg-R}E%>Nv-Ohk7>b#+VF`cvkq60=rS%A+n@k%~#XHDR{ZmV-GD z^H}h321O4ZPJ8fi+rgrTI~etF7ZVI~$CNxtb%h)5;U4aL7{fR<%rQ6HcuVsPe$s!L z8Ze9;wq&LV3{xjSGdLui4z2#92T~+mo5~NjK32H4$>YZ)*?GOhV92&ePw=Sy~;Uw;FQjqq$g}+5@Xj?;%(H zjJ}U#%HbT11#$#_VwlGBWFuFM-~!F|%_12+7crUw7n5(mt$sr83-S!_$urCPm9RYW zBd?T29ggvo@GvF#JwiXjcNF&Fd^p1So#FUBj{lfA6DcQ1IsMgroI1L>mryT={xpa@ cE+t1?#+78A#8sN}xQ6SLx(${t70vYf3t-bZ!vFvP literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarFile$2.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarFile$2.class new file mode 100644 index 0000000000000000000000000000000000000000..15d4aaa1d8de175dab36e848aca264ae49d1cde5 GIT binary patch literal 1563 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 KT(Sq1f$=Xz9-lA( literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarURLConnection$JarEntryName.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/JarURLConnection$JarEntryName.class new file mode 100644 index 0000000000000000000000000000000000000000..ee09110096be08e70d14fe3c5ec9720f4b4bf1db GIT binary patch literal 2825 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 literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/ZipInflaterInputStream.class b/spring-boot-samples/spring-boot-sample-simple/org/springframework/boot/loader/jar/ZipInflaterInputStream.class new file mode 100644 index 0000000000000000000000000000000000000000..c6f9b607f9e8acfa62eb4a98c0e8645f79bf087e GIT binary patch literal 1629 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 literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/sample/simple/SampleSimpleApplication.class b/spring-boot-samples/spring-boot-sample-simple/sample/simple/SampleSimpleApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..aded20abd7f1f1bcf8870ef75a66113154cc8d4e GIT binary patch literal 1408 zcmb7E%Tg0T6g{1UOcF=lpeTx{ND`Fsfr!Skq$nsC@lnQtg{#h_35_$|shJ6nrJtl_ zq29!af2hPAQ|>Q2}Qq^j=*+!u#B_~cXtSD~}Z-AD(=4nGGt>&-|X%0SeJHvL>G z8NFag<_p^lsSRDD#74?ei8oEZDuNH3qA`q@wadM29!Rr4JxoP=lEN?clu?O`s>C&| zHyWOF<3uT1GH5D>>HNp?K0n}&$5q{_L?-Q09GwSs;+yF6nNst)Byeu?$Q6yaa0|<{ zujppriY;lfoE;E)*@Rc#af5i41S_u_ZT&_wshB0Env2h;{Y~*mk!b2O6uwvn{ja58hSm;*KfF4*_voVFI z45RJlzpd^IH)1IE6_BZKL;F5gH6sX8pb`Pir;R@!Mi*=4IE;i(?6p<)KNlcd$aQXj<@`fBD(Z0GVYa%tZYIyPD?VV?db88Bq&Ntm&dwdt3WCVP== zk}N5M)=}CyWEt6^;&-qw^pe0Bt;QLc!#J&W%K;OZq}^vy!Ze*2@D_O|$PRx+qWBHT z6QoWs)Mm-WUyBrWDQ22(d7m;74wrD5xU!fb&P2?)O4h{AjHin~VD0p>ErT@Okyj?> d0Im=wMaZj!pQZN%uEk{!Q^D71KS$3E;4cfDeo6oU literal 0 HcmV?d00001 diff --git a/spring-boot-samples/spring-boot-sample-simple/sample/simple/service/HelloWorldService.class b/spring-boot-samples/spring-boot-sample-simple/sample/simple/service/HelloWorldService.class new file mode 100644 index 0000000000000000000000000000000000000000..8566069ee75b4584272cc6f16f9a8f8ba3d434e4 GIT binary patch literal 801 zcma)4T~AX%5ItK;zr0weNI^kCQCbq+7oNnJAc^szYGO@^kK1;ri?_Qsd$%>j_@6W} zkZ9r$@JAVEZyP0+2OoCN?Ck8BvnTWO*S8-4_OMey8S6!CRFK1Z3AX~?E~A9a5N#E4 zr--`(d839TP-~s2v68Ve1KIXYo58-o+Ut?=dPp6e>TXO2##pbswk8$WYgsptX%b40 z9dmrJ?!D}iGO0XPJ#XEqRDT}Gj*3Ubl=I^d2rO)W42>ThSr_*|2^1b{qx}>acr|j z?Ma4pR0rg<{0mA`HDKoDM)NWcDs4M*J$j}?_mvr{hru?1-Amm_Jvp-eG$DCthlw?0 z{C09!Zz+jsNhP3`&bp&`On`8EdJ$w)jgq}XHu0UWcmUR z8neHg{rFT28&&dlG7s3|*(vjE2_7F-#TfA^-~z9!DXM(I&9TILjjtr5V4UAQhxo!l z4%c`uWXU>~IgTa;xQ-P*u`5{RJv=_h$bkBH2g@hs%~ULL))9cZx?jL4*&oF literal 0 HcmV?d00001 diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/repackage/ProjectLibraries.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/repackage/ProjectLibraries.java index b0ea449a1a97..dc74f3ed303c 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/repackage/ProjectLibraries.java +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/repackage/ProjectLibraries.java @@ -75,18 +75,18 @@ public void setCustomConfigurationName(String customConfigurationName) { @Override public void doWithLibraries(LibraryCallback callback) throws IOException { - Set custom = getLibraries(this.customConfigurationName, + Set custom = getLibraries(this.customConfigurationName, LibraryScope.CUSTOM); if (custom != null) { libraries(custom, callback); } else { - Set compile = getLibraries("compile", LibraryScope.COMPILE); + Set compile = getLibraries("compile", LibraryScope.COMPILE); - Set runtime = getLibraries("runtime", LibraryScope.RUNTIME); + Set runtime = getLibraries("runtime", LibraryScope.RUNTIME); runtime = minus(runtime, compile); - Set provided = getLibraries(this.providedConfigurationName, + Set provided = getLibraries(this.providedConfigurationName, LibraryScope.PROVIDED); if (provided != null) { compile = minus(compile, provided); @@ -99,13 +99,13 @@ public void doWithLibraries(LibraryCallback callback) throws IOException { } } - private Set getLibraries(String configurationName, LibraryScope scope) { + private Set getLibraries(String configurationName, LibraryScope scope) { Configuration configuration = (configurationName == null ? null : this.project .getConfigurations().findByName(configurationName)); if (configuration == null) { return null; } - Set libraries = new LinkedHashSet(); + Set libraries = new LinkedHashSet(); for (ResolvedArtifact artifact : configuration.getResolvedConfiguration() .getResolvedArtifacts()) { libraries.add(new ResolvedArtifactLibrary(artifact, scope)); @@ -115,14 +115,14 @@ private Set getLibraries(String configurationName, LibraryScope scope) return libraries; } - private Set getLibrariesForFileDependencies(Configuration configuration, + private Set getLibrariesForFileDependencies(Configuration configuration, LibraryScope scope) { - Set libraries = new LinkedHashSet(); + Set libraries = new LinkedHashSet(); for (Dependency dependency : configuration.getIncoming().getDependencies()) { if (dependency instanceof FileCollectionDependency) { FileCollectionDependency fileDependency = (FileCollectionDependency) dependency; for (File file : fileDependency.resolve()) { - libraries.add(new Library(file, scope)); + libraries.add(new GradleLibrary(fileDependency.getGroup(), file, scope)); } } else if (dependency instanceof ProjectDependency) { @@ -134,16 +134,16 @@ else if (dependency instanceof ProjectDependency) { return libraries; } - private Set minus(Set source, Set toRemove) { + private Set minus(Set source, Set toRemove) { if (source == null || toRemove == null) { return source; } Set filesToRemove = new HashSet(); - for (Library library : toRemove) { + for (GradleLibrary library : toRemove) { filesToRemove.add(library.getFile()); } - Set result = new LinkedHashSet(); - for (Library library : source) { + Set result = new LinkedHashSet(); + for (GradleLibrary library : source) { if (!filesToRemove.contains(library.getFile())) { result.add(library); } @@ -151,24 +151,63 @@ private Set minus(Set source, Set toRemove) { return result; } - private void libraries(Set libraries, LibraryCallback callback) + private void libraries(Set libraries, LibraryCallback callback) throws IOException { if (libraries != null) { - for (Library library : libraries) { + Set duplicates = getDuplicates(libraries); + for (GradleLibrary library : libraries) { + library.setIncludeGroupName(duplicates.contains(library.getName())); callback.library(library); } } } + private Set getDuplicates(Set libraries) { + Set duplicates = new HashSet(); + Set seen = new HashSet(); + for (GradleLibrary library : libraries) { + if (library.getFile() != null && !seen.add(library.getFile().getName())) { + duplicates.add(library.getFile().getName()); + } + } + return duplicates; + } + + private class GradleLibrary extends Library { + + private final String group; + + private boolean includeGroupName; + + public GradleLibrary(String group, File file, LibraryScope scope) { + super(file, scope); + this.group = group; + } + + public void setIncludeGroupName(boolean includeGroupName) { + this.includeGroupName = includeGroupName; + } + + @Override + public String getName() { + String name = super.getName(); + if(this.includeGroupName && this.group != null) { + name = this.group + "-" + name; + } + return name; + } + + } + /** * Adapts a {@link ResolvedArtifact} to a {@link Library}. */ - private class ResolvedArtifactLibrary extends Library { + private class ResolvedArtifactLibrary extends GradleLibrary { private final ResolvedArtifact artifact; public ResolvedArtifactLibrary(ResolvedArtifact artifact, LibraryScope scope) { - super(artifact.getFile(), scope); + super(null, artifact.getFile(), scope); this.artifact = artifact; } diff --git a/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/JarWriter.java b/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/JarWriter.java index 11baac4cd5e3..ef35fc473763 100644 --- a/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/JarWriter.java +++ b/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/JarWriter.java @@ -128,7 +128,7 @@ public void writeEntry(String entryName, InputStream inputStream) throws IOExcep public void writeNestedLibrary(String destination, Library library) throws IOException { File file = library.getFile(); - JarEntry entry = new JarEntry(destination + file.getName()); + JarEntry entry = new JarEntry(destination + library.getName()); if (library.isUnpackRequired()) { entry.setComment("UNPACK:" + FileUtils.sha1Hash(file)); } diff --git a/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Library.java b/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Library.java index 2da78f84e231..9d5443ef65ae 100644 --- a/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Library.java +++ b/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Library.java @@ -27,6 +27,8 @@ */ public class Library { + private final String name; + private final File file; private final LibraryScope scope; @@ -49,11 +51,31 @@ public Library(File file, LibraryScope scope) { * @param unpackRequired if the library needs to be unpacked before it can be used */ public Library(File file, LibraryScope scope, boolean unpackRequired) { + this(null, file, scope, unpackRequired); + } + + /** + * Create a new {@link Library}. + * @param name the name of the library as it should be written or {@code null} to use + * the file name + * @param file the source file + * @param scope the scope of the library + * @param unpackRequired if the library needs to be unpacked before it can be used + */ + public Library(String name, File file, LibraryScope scope, boolean unpackRequired) { + this.name = (name == null ? file.getName() : name); this.file = file; this.scope = scope; this.unpackRequired = unpackRequired; } + /** + * @return the name of file as it should be written + */ + public String getName() { + return this.name; + } + /** * @return the library file */ diff --git a/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Repackager.java b/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Repackager.java index 146ef0ae6e5b..de3dddc09ce0 100644 --- a/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Repackager.java +++ b/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Repackager.java @@ -20,6 +20,8 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.util.HashSet; +import java.util.Set; import java.util.jar.JarFile; import java.util.jar.Manifest; @@ -153,17 +155,22 @@ private void repackage(JarFile sourceJar, File destination, Libraries libraries) throws IOException { final JarWriter writer = new JarWriter(destination); try { + final Set seen = new HashSet(); writer.writeManifest(buildManifest(sourceJar)); writer.writeEntries(sourceJar); - libraries.doWithLibraries(new LibraryCallback() { @Override public void library(Library library) throws IOException { File file = library.getFile(); if (isZip(file)) { String destination = Repackager.this.layout - .getLibraryDestination(file.getName(), library.getScope()); + .getLibraryDestination(library.getName(), + library.getScope()); if (destination != null) { + if (!seen.add(destination + library.getName())) { + throw new IllegalStateException("Duplicate library " + + library.getName()); + } writer.writeNestedLibrary(destination, library); } } diff --git a/spring-boot-tools/spring-boot-loader-tools/src/test/java/org/springframework/boot/loader/tools/RepackagerTests.java b/spring-boot-tools/spring-boot-loader-tools/src/test/java/org/springframework/boot/loader/tools/RepackagerTests.java index 7dc224ca3e7c..377c7c44fb6d 100644 --- a/spring-boot-tools/spring-boot-loader-tools/src/test/java/org/springframework/boot/loader/tools/RepackagerTests.java +++ b/spring-boot-tools/spring-boot-loader-tools/src/test/java/org/springframework/boot/loader/tools/RepackagerTests.java @@ -299,6 +299,25 @@ public void doWithLibraries(LibraryCallback callback) throws IOException { assertThat(entry.getComment().length(), equalTo(47)); } + @Test + public void duplicateLibraries() throws Exception { + TestJarFile libJar = new TestJarFile(this.temporaryFolder); + libJar.addClass("a/b/C.class", ClassWithoutMainMethod.class); + final File libJarFile = libJar.getFile(); + this.testJarFile.addClass("a/b/C.class", ClassWithMainMethod.class); + File file = this.testJarFile.getFile(); + Repackager repackager = new Repackager(file); + this.thrown.expect(IllegalStateException.class); + this.thrown.expectMessage("Duplicate library"); + repackager.repackage(new Libraries() { + @Override + public void doWithLibraries(LibraryCallback callback) throws IOException { + callback.library(new Library(libJarFile, LibraryScope.COMPILE, false)); + callback.library(new Library(libJarFile, LibraryScope.COMPILE, false)); + } + }); + } + @Test public void customLayout() throws Exception { TestJarFile libJar = new TestJarFile(this.temporaryFolder); diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/acme-lib/pom.xml b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/acme-lib/pom.xml new file mode 100644 index 000000000000..1959bcb58df9 --- /dev/null +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/acme-lib/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + acme-lib + + + org.springframework.boot.maven.it + jar-lib-name-conflict + 0.0.1.BUILD-SNAPSHOT + + + + + org.springframework + spring-context + 4.0.5.RELEASE + + + diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/another-acme-lib/pom.xml b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/another-acme-lib/pom.xml new file mode 100644 index 000000000000..455e4714ecd6 --- /dev/null +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/another-acme-lib/pom.xml @@ -0,0 +1,14 @@ + + + 4.0.0 + org.springframework.boot.maven.it.another + acme-lib + + + org.springframework.boot.maven.it + jar-lib-name-conflict + 0.0.1.BUILD-SNAPSHOT + + + diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/pom.xml b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/pom.xml new file mode 100644 index 000000000000..9e4f3a7284ea --- /dev/null +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + org.springframework.boot.maven.it + jar-lib-name-conflict + 0.0.1.BUILD-SNAPSHOT + pom + + UTF-8 + + + + acme-lib + another-acme-lib + test-project + + + diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/test-project/pom.xml b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/test-project/pom.xml new file mode 100644 index 000000000000..d15c97663be9 --- /dev/null +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/test-project/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + org.springframework.boot.maven.it + test-project + 0.0.1.BUILD-SNAPSHOT + + UTF-8 + + + + + @project.groupId@ + @project.artifactId@ + @project.version@ + + + + repackage + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + + Foo + + + + + + + + + + org.springframework.boot.maven.it + acme-lib + 0.0.1.BUILD-SNAPSHOT + + + org.springframework.boot.maven.it.another + acme-lib + 0.0.1.BUILD-SNAPSHOT + + + javax.servlet + javax.servlet-api + 3.0.1 + provided + + + diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/test-project/src/main/java/org/test/SampleApplication.java b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/test-project/src/main/java/org/test/SampleApplication.java new file mode 100644 index 000000000000..0b3b431677d0 --- /dev/null +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/test-project/src/main/java/org/test/SampleApplication.java @@ -0,0 +1,8 @@ +package org.test; + +public class SampleApplication { + + public static void main(String[] args) { + } + +} diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/verify.groovy b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/verify.groovy new file mode 100644 index 000000000000..18782c401931 --- /dev/null +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/jar-lib-name-conflict/verify.groovy @@ -0,0 +1,14 @@ +import java.io.*; +import org.springframework.boot.maven.*; + +File f = new File(basedir, "test-project/target/test-project-0.0.1.BUILD-SNAPSHOT.jar") +new Verify.JarArchiveVerification(f, Verify.SAMPLE_APP) { + @Override + protected void verifyZipEntries(Verify.ArchiveVerifier verifier) throws Exception { + super.verifyZipEntries(verifier) + verifier.assertHasEntryNameStartingWith("lib/org.springframework.boot.maven.it-acme-lib-0.0.1.BUILD-SNAPSHOT.jar") + verifier.assertHasEntryNameStartingWith("lib/org.springframework.boot.maven.it.another-acme-lib-0.0.1.BUILD-SNAPSHOT.jar") + } +}.verify(); + + diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ArtifactsLibraries.java b/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ArtifactsLibraries.java index 7796158b48c7..50280ea7c868 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ArtifactsLibraries.java +++ b/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ArtifactsLibraries.java @@ -20,11 +20,13 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; import org.apache.maven.artifact.Artifact; import org.apache.maven.model.Dependency; +import org.apache.maven.plugin.logging.Log; import org.springframework.boot.loader.tools.Libraries; import org.springframework.boot.loader.tools.Library; import org.springframework.boot.loader.tools.LibraryCallback; @@ -51,22 +53,44 @@ public class ArtifactsLibraries implements Libraries { private final Collection unpacks; - public ArtifactsLibraries(Set artifacts, Collection unpacks) { + private final Log log; + + public ArtifactsLibraries(Set artifacts, Collection unpacks, + Log log) { this.artifacts = artifacts; this.unpacks = unpacks; + this.log = log; } @Override public void doWithLibraries(LibraryCallback callback) throws IOException { + Set duplicates = getDuplicates(this.artifacts); for (Artifact artifact : this.artifacts) { LibraryScope scope = SCOPES.get(artifact.getScope()); if (scope != null && artifact.getFile() != null) { - callback.library(new Library(artifact.getFile(), scope, + String name = artifact.getFile().getName(); + if (duplicates.contains(name)) { + this.log.debug("Duplicate found: " + name); + name = artifact.getGroupId() + "-" + name; + this.log.debug("Renamed to: " + name); + } + callback.library(new Library(name, artifact.getFile(), scope, isUnpackRequired(artifact))); } } } + private Set getDuplicates(Set artifacts) { + Set duplicates = new HashSet(); + Set seen = new HashSet(); + for (Artifact artifact : artifacts) { + if (artifact.getFile() != null && !seen.add(artifact.getFile().getName())) { + duplicates.add(artifact.getFile().getName()); + } + } + return duplicates; + } + private boolean isUnpackRequired(Artifact artifact) { if (this.unpacks != null) { for (Dependency unpack : this.unpacks) { @@ -78,4 +102,5 @@ private boolean isUnpackRequired(Artifact artifact) { } return false; } + } diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RepackageMojo.java b/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RepackageMojo.java index 0bfd9edacb70..df39e6c40737 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RepackageMojo.java +++ b/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RepackageMojo.java @@ -153,7 +153,8 @@ protected String findMainMethod(JarFile source) throws IOException { Set artifacts = filterDependencies(this.project.getArtifacts(), getFilters()); - Libraries libraries = new ArtifactsLibraries(artifacts, this.requiresUnpack); + Libraries libraries = new ArtifactsLibraries(artifacts, this.requiresUnpack, + getLog()); try { repackager.repackage(target, libraries); } diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/ArtifactsLibrariesTests.java b/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/ArtifactsLibrariesTests.java index b18c13006b96..24fb2972f6b1 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/ArtifactsLibrariesTests.java +++ b/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/ArtifactsLibrariesTests.java @@ -17,11 +17,14 @@ package org.springframework.boot.maven; import java.io.File; +import java.util.Arrays; import java.util.Collections; +import java.util.LinkedHashSet; import java.util.Set; import org.apache.maven.artifact.Artifact; import org.apache.maven.model.Dependency; +import org.apache.maven.plugin.logging.Log; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -35,6 +38,8 @@ import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; /** @@ -63,7 +68,7 @@ public class ArtifactsLibrariesTests { public void setup() { MockitoAnnotations.initMocks(this); this.artifacts = Collections.singleton(this.artifact); - this.libs = new ArtifactsLibraries(this.artifacts, null); + this.libs = new ArtifactsLibraries(this.artifacts, null, mock(Log.class)); given(this.artifact.getFile()).willReturn(this.file); } @@ -88,9 +93,31 @@ public void callbackWithUnpack() throws Exception { Dependency unpack = new Dependency(); unpack.setGroupId("gid"); unpack.setArtifactId("aid"); - this.libs = new ArtifactsLibraries(this.artifacts, Collections.singleton(unpack)); + this.libs = new ArtifactsLibraries(this.artifacts, Collections.singleton(unpack), + mock(Log.class)); this.libs.doWithLibraries(this.callback); verify(this.callback).library(this.libraryCaptor.capture()); assertThat(this.libraryCaptor.getValue().isUnpackRequired(), equalTo(true)); } + + @Test + public void renamesDuplicates() throws Exception { + Artifact artifact1 = mock(Artifact.class); + Artifact artifact2 = mock(Artifact.class); + given(artifact1.getType()).willReturn("jar"); + given(artifact1.getScope()).willReturn("compile"); + given(artifact1.getGroupId()).willReturn("g1"); + given(artifact1.getFile()).willReturn(new File("a")); + given(artifact2.getType()).willReturn("jar"); + given(artifact2.getScope()).willReturn("compile"); + given(artifact2.getGroupId()).willReturn("g2"); + given(artifact2.getFile()).willReturn(new File("a")); + this.artifacts = new LinkedHashSet(Arrays.asList(artifact1, artifact2)); + this.libs = new ArtifactsLibraries(this.artifacts, null, mock(Log.class)); + this.libs.doWithLibraries(this.callback); + verify(this.callback, times(2)).library(this.libraryCaptor.capture()); + assertThat(this.libraryCaptor.getAllValues().get(0).getName(), equalTo("g1-a")); + assertThat(this.libraryCaptor.getAllValues().get(1).getName(), equalTo("g2-a")); + } + }