From cf9d3dbe993a1482679d9d60c79c0e9839829b52 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 21:55:56 +0000 Subject: [PATCH 1/5] feature(build): target Java 11 via release; jar packaging; modern plugins - maven-compiler-plugin 3.11.0 with 11, -Xlint:all -Werror - surefire/failsafe 3.2.5, javadoc 3.6.3, enforcer 3.5.0 requireJavaVersion [11,) - packaging pom -> jar so sources compile and repackage on JDK 11 - upgrade Maven wrapper 3.3.9 -> 3.9.9 Co-Authored-By: derek.wu --- .mvn/wrapper/maven-wrapper.properties | 3 +- mvnw | 0 pom.xml | 71 +++++++++++++++++- target/classes/hello/Application.class | Bin 6460 -> 0 bytes .../hello/controller/GreetingController.class | Bin 1219 -> 0 bytes .../hello/controller/HelloController.class | Bin 4496 -> 0 bytes .../hello/controller/TopicController.class | Bin 2344 -> 0 bytes .../hello/declaration/CustomPredicate.class | Bin 248 -> 0 bytes .../hello/declaration/TimeClient.class | Bin 1383 -> 0 bytes target/classes/hello/model/Customer.class | Bin 1407 -> 0 bytes target/classes/hello/model/Greeting.class | Bin 588 -> 0 bytes target/classes/hello/model/Quote.class | Bin 1128 -> 0 bytes .../hello/model/SimpleTimeClient.class | Bin 1720 -> 0 bytes target/classes/hello/model/Topic.class | Bin 1121 -> 0 bytes target/classes/hello/model/Value.class | Bin 1111 -> 0 bytes .../classes/hello/service/TopicService.class | Bin 13054 -> 0 bytes target/classes/public/index.html | 10 --- 17 files changed, 70 insertions(+), 14 deletions(-) mode change 100644 => 100755 mvnw delete mode 100644 target/classes/hello/Application.class delete mode 100644 target/classes/hello/controller/GreetingController.class delete mode 100644 target/classes/hello/controller/HelloController.class delete mode 100644 target/classes/hello/controller/TopicController.class delete mode 100644 target/classes/hello/declaration/CustomPredicate.class delete mode 100644 target/classes/hello/declaration/TimeClient.class delete mode 100644 target/classes/hello/model/Customer.class delete mode 100644 target/classes/hello/model/Greeting.class delete mode 100644 target/classes/hello/model/Quote.class delete mode 100644 target/classes/hello/model/SimpleTimeClient.class delete mode 100644 target/classes/hello/model/Topic.class delete mode 100644 target/classes/hello/model/Value.class delete mode 100644 target/classes/hello/service/TopicService.class delete mode 100644 target/classes/public/index.html diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index c954cec..75249eb 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1 +1,2 @@ -distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip +wrapperUrl=https://repo1.maven.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar diff --git a/mvnw b/mvnw old mode 100644 new mode 100755 diff --git a/pom.xml b/pom.xml index 63f5cbd..89d5894 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework gs-spring-boot - pom + jar 0.1.0 @@ -32,19 +32,84 @@ com.h2database h2 + + org.springframework.boot + spring-boot-starter-test + test + - 1.8 + 11 + UTF-8 + UTF-8 - org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + 11 + + -Xlint:all + -Werror + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + + org.apache.maven.plugins + maven-failsafe-plugin + 3.2.5 + + + + integration-test + verify + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.6.3 + + none + -Xdoclint:none + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.5.0 + + + enforce-java-11 + + enforce + + + + + [11,) + + + + + + diff --git a/target/classes/hello/Application.class b/target/classes/hello/Application.class deleted file mode 100644 index 245a020cdb693ce4216257a9f5aa3bd787671f48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6460 zcmb7Jd3+RS8GgQ8v)K%gE+mwDxHloNlu{_91w%+A=>|$RKoM&@*_|Wejybqa!877`CZ1J~>+$Ruo)gCncy0rphv&!f0=!Vci{hxqbuqkH!AlgpR6gBU zk1D(@4iz^w;N^Hl95>^Z1ckmfhS$k=uaDskal8?4is8))-V(!GW4JYjx5e;wDfJx< zSc7*aAn=|Bych3_+w|D8Xh+6b^-NxZZJDwj282{YY4RYG)3Di3=i4*sBzk|PoyMGDr?zBsy9SU z?nV8jf@_W%hfT*E%o`nrg5~P2X%!rSOCv=M8hXJ=4e43evd2<-nIY9ta;?**ZR9An z?lQAry1Qt2vgNQqO{bNkZS&G*!Ps9K9W?9#o!UH)vU>ioZkzHsSgdhJOsb!s9x?KH zE7egf=FO~U6eZV;>SjTpIe9F7TtB6!@_J!7m2suJ?NU`t+P9y6OW`vp$gkVOQg{SA ztJO1qRPD)< zB@;R6{wPD2PaTwtd^;!O>e&;0deMuOf&&V^EHILcR5EB;ZfX`ydrD?LM*y`%a?Zj; z1C&9ZQD8?T=i|{S5FM1s5QjjuhuNgoYP-awAB%Q#He;h*^9<~?Mo0BRPU4XTQ1A*V z-gPEx6g})K_zLsr5O?mOq68Du+UTRH2PMpY^9Vg@i@*rH3AHPRZmI$MNmubh z{7A*+*rnpf_=$p_s`!~S_U9^ofrrTl_IGs* zbWJBsnmH}g)!);RZqtTL+i|av(A5ri^mp#-=ud9B zzOQw(wT>zhVm^DIriukPrHCd~G>e4-tx=^Fz0t6;qKGHAzEGP8rVCC2Q&m*nq6C_} zRoUA!2h*YT*=_OLL`Z|cV7TRWG9*rWRCkPQcatX5POsa^Vhjln%;zo_>H?WD$2Hh2 zs;!bs7yP}3jpRzsZ!QbR&_~JOJ6yTU$wRg-H_sAk3R@j)3bKPY4;!u=81@=NvXOI& z4fgJ)WJ`owla_f!)M4BD827&#$FgafN>SaG?RPDK-UyAp@!n=NGjfw#V2G%^?ZsSc zvPUdPwuC4GS7_JtIiGf!g&}s5?NQ+IkTy#v59U11mEPbckfO>cA+zwe$Hj$WQ5;ob z@hmuxK3gzf#u+19lA~;$?#PKrU~R?JUKyiuDb#EV6{6 zB!|J^9UEkrm-BF1Zr|n6oB?Imk;A|&Ev}c_7AgF22}H#(obMp40?B0W%q}x?MP{jv zDIL|B{T+`l4w3q5y^|B`XnGs#_P-kVZunm?WK#&4;&;-ZLxn$dC}M>wG_gj-X`E3} zlGD*iIqe+hP=Fyh2&|fdgjqOcoiI{q?|8*YQV+gY5Qd{uPl{MakJFZQqQt6Jd*ngT zGeDmA9t@im$n$5?eVlkXcdqdn1K5V~67r{laeybpF!|$u>8t$Tyx~*?k~{T$K4bF3 zfg;v3&@s;Zr?&aRpb%Eb96BOyQc5sA@fj>hztcNz{&` zZo>o=fxfnLh_&tCc;B{~>TR`6wM{j*V&TT7+ATZlNVuqugg4ZR+a7!P9@HN_i}?PH ziH3w)eJ|#WWA6P>ch=mAd5dbs(Kvw%svwQ4_Ke#^AAqG)y&UtP(ae?fcoo0Zt;VIi z?!r3Kt;Z20kwc5;#4ftD88M{M$2*#g{W!p@!qdx@I7o+@`P|Px8GseYV1U|=U@i{f zFx@;t+Qq1Pj4J9BT&3Ws_j{FKoF3sDL5?SpSH^S)pQ?DR-7t>C?Ys%cbdzUJvriDj zl%zO@CzGv%)H3#0^D5-QibhD0?SV*T!+FdHrVG6|BvdI2RXi`)JSm`t0`v;;*Hioz zzQr7y>!=90g%M9I@WS1CH<}X7<5=k3T*w>cUMxCVomiYXT9a6kIa-@onmJmRSe7}5 z3Ih|?j|_q{`q7XZet) z)UTX5G{^)fgiVpmQpf;-Cn2KUgUv@<6BkWj3*(cxcmiAH^%C!T7TcyLdLWc&4S9@G z2Bn|?i$-0`duecyy4ZzzCw1+kE@|*`8T9S7UZh*Aw=j*ZHCvdyOCvortHD>t= diff --git a/target/classes/hello/controller/GreetingController.class b/target/classes/hello/controller/GreetingController.class deleted file mode 100644 index 1149660667b8bd33f1ed25bd2d4d556a0184f111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1219 zcmb7DYflqF6g|^-OLKy#_<+zlxxYx|+pLNS!% z@K8IhW&6?&l@d~0T>GA5TWis;=0_lz$BuOLDnqhdsWYV3{U$*T)*LCGhh9UdSG?gy z41Alrb*>y^cbqA`?*t5UwSD2bzA2@Z@47-+8%hXGG>KxzMTB#$j+dd@q1fF~r32#; z1@{zz@=}s}L}7f3+H*WncLIkvtV!u>t{oDA;bF~JEh}gnY4#L_ANlI7btD>A!;wvk zpT=5S;$0{L{fxKUv5e`%SUzSk%=DIc$qf`q+EZ)!ytN`2>Z8~cdpvZ1zgPOTuiPd> zVcQRtEuJ_==drWOEt$7JUyFh6626EFC^5`OBlORiC}I#p48!r0_P#|Cw{eGI_CKDR z+Inh+VsUCNm}VIIGruny2g24_+%3{h+&AQwY2X}bE8)?UuF2+x(9t|@_T6H*_d$YJ`L{RaAwBD4`Y72|k}VvH}nYdEC!4K(-JWfYr$d+wjzujAq7}jAk4~Of#YPfGtv&s&a7u< zB}5MAuyfz{?cDcaJC*>G*faD{qV)P=sBg)cP7Aj~0;N)8Ro zXRwgNHc@(A=%So(BZm*;BUyZO13rdVgze*5e4-nl#HZxr)hu4i;nVnx44)O=&t>uX z9KL`rX7QygzAR#2$>FP_Xd7-dHY-<087GJIQx@5u078NMgO_cQoG20zrG zU-fKv%Bs~JBeXQ+C$1XvM$s|cxneo=ZFlathDU0~HEYZcLffr`Bd%HY{BX2t_(mnP z{Gcg(GN?OtIN~@Z^O7A_M?J@L%a&tR!qS*5j8pZq*5ZQan^RTG6*WS~S6Q%U)^^R3 zdB&LM;pr*OLwaSOXPmMfD=4|=jj)=S)a2B+p6c^0!xYWJLRVQvZ7q`?dUd-}w)}a!LhtULs9KKW6@z%8IMuRCKkvNIa6`Lh zU9+C085 zvAp8Bq3=14?_ zu0hz6jXK8gehmdFE{wBc#ZYlTRcWk0Pz$`ZYJ9SEPSvci>Y2kz$CDV+aQa~D-)SpU z21QF_s*+Z`K@~(*O_@>?E97uZ6|kDcT1#Uml%l%#inBzHheceU`$n`8rn2m_0RPyirV3@ z*mqpyo8qT!$bx@*YOMdQp4d@66r@O8hSO)_bI<%^KQ&oDuZ9?_%&YF z@f-YB!?9Fk)g+boW>wv{=54PLs2V#+RV^3+mHbY}@9_s6f5e|!Gjo-aQlO+IDMLAy zQCEwW;j3p9h5szxdPB#XcuQdXg>`I|VEQp;%^D3SRKa4vII0_-%j7kg-5I>CV+qR| z`cvlSM4FH!`KaO8v!3tT#<0@xz^LIGrcoSa-us55<0fupa9hXwFp|MLI__XX$3^^A z$0ZqFkk2bJyePv5WOxY^8dRJM_inHnHaGKNa^@;;*h*@wZHa95jIV}WE3J4f3%lle zHbKiZ>Fa^D4SQ`5PtuNp+0cuN=_;dEmNHRCot)LMzg2H+^YOKMsW7<-?cV}CWX=j# zwS1aTcN)Q%vB<~C?t$?{XN;?~)g(Y|2g*aivX-# zu0nqO5;BE+b_v~ud~OLF3VD4A8w>ddmawUi-@Jq^Z&I)Wr#bGAjNL)yJ;-4fHe)xo zV=qUAJ^~uxcnJG&hP--wAW9hLmxgCCK`mm;ztDwsq_5pUe)=Z1PTazSXYXJe=iBo; zmhsS|%h-7fJ)Grt$>(kCW@as8PqO%MbMYN1}!O$#%bp zj$!S)3zK9gCR6d1{q-JiwLb_bAXZsBw-!0i!$X#%{=#Jqxs*tmMxx0>LlQ*h65U%+kV i%8Q(Jkb8u@0Sv6Q}7zpJZ!eFO?-%S|!6U z{ZH*oC!Og-e?Wg!r{AvRON2ay2kmO5bI$jD=d%C&``6z@v`kiosx{>a}|Mwj*?Pl_%- z5TR(gyzY6vw59O9kkKQ{587tf3xwA`4D2pH_Jg0zCbzxNJhWTV58j&gz`?9X(mxgf zcM!I?COje68Rct>2aF0Ez5_02E#dL+qi&N2`!>)RON>o#)gSYw*%Y2LDtwRs67f*JvU@#b3a%4Jwi^MgXzE%pngUBr@kb#$JDZ9| zOw+Z!w%L#>!>fxKL>T3Sqtc{BjaoCR#?j4p!ub{1I$g+JTNO<5;8aB)WL7jw)2=N$ z{jxw&*>)T)fYEF%gQqI;L?U)3<3Dl%HXR>Y9)2)~eqOaBNECKoH})B=d~AT{zVjCD z)u`v#k|#2185PJNu7u@xe*kP1?SX_Q?iVuLm2Giz%i7xCVl;OsT%`XM=AavOE$+2t zXWI{Ukb#?{zB``eZ62Wd@Aqw2c(Eg+nUN0YyD)nEA(6&4_(IY@Kv5J;S93Jq4N%cl z=R!Y-J2&jNZolo+A4Zji9|bMGEz~rh*U1^q=RGCq<0dJTL-$pK&e10Z8FZ#ZFAcg# za|V4!*9^Kzw+#A%?iutYePz(sv~18fG{z|E z_i+{XGe%P}!#;&m5&K!}W$Yl0bs8rVJHtM)^e3_3@sgt%tjd@Wx^Y~WLD({|9F%7*8Nh=z9KDHc4tt3+6 zO^QTL=QK^iOi0A?&*TR3V=Cy*gi1OIr8JXuB;o0pBn*?D#=n0Ge(j~_PCTdfyJDG;u(~xoN|9|T~M)Frt#vH8;X6*^le`Q|( AuK)l5 diff --git a/target/classes/hello/declaration/CustomPredicate.class b/target/classes/hello/declaration/CustomPredicate.class deleted file mode 100644 index e35803f64936c9dac92044b2074162814cb240fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmZXPu?~Vj5JYDYLD0fNKfn$fudz~NV`62Z2~>9Hals=eByjj~7Jh&qWjwLNVw0Vh z$?WXw{dfXcV&o(AF(kM~)`l>R4mrPbrg@RE<0Y5EtmkJ!5UZ@;(I#2_ z+qeIS5XNOw3AtC=226HMZOYrJlBp8h$i??0VRn^Tmn@Y+^NJf)7OZ0=jJxeT0>QDr W0OS&SaINlJ<-oJ^+k6aK5_|y1tUr+e diff --git a/target/classes/hello/declaration/TimeClient.class b/target/classes/hello/declaration/TimeClient.class deleted file mode 100644 index a077c3b314ee91fac7a75e48cd1d292b119702c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1383 zcma)6YflqF6g|_H-L@%Al)A1LI*PW0fBdOc3!3FdX=bSyCF6(M)+l3>uxd_F(D7n;_%BvUsz)o$6fLQFzo z>agBJAq!rSI|>oHN6hKMF+bs1NsQTZ&KyI60^WMA$Xg6kW(ah+dzjskzU?07+G9f; z1;ti9i z66kH0!O*oMdGXyQF9)ntVg{A0(quIl8D{?@g(h5OB9H6}!+7CHIF6UKMA6|sSE912 zdaI5tT&eW!cvZhBHf)t;Ps=r@l0krnj*M1BHXX-8?5~{&qxI+6+h$2F(nW=%D7Cs~T9kDlG z(2>&4pl9ew#p!j1#2Jz`be>WiQK5sPq8OolicTQD4&u|uavftBCCeZoG)&NGJcu!I z6=||xqelZ<*U85)N%&C73gMNK?#x#h3^O%!)zE!PmPqg&ilO~vlbevZfhn@7o#JNn JyGf@A%-=-ZS;_za diff --git a/target/classes/hello/model/Customer.class b/target/classes/hello/model/Customer.class deleted file mode 100644 index 06e7307b01f2d26b0448a3cb8b12af11a1a0577c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1407 zcmaJ-=K;NhX@e zNHp;W_@j*HY4<`#F->}(mwV51&bjx`-=Dt$tYJNcN(Kt1j%8V^X-r~8qE#K1Bo8Hd zq~oz9Pb68(U(KW0?Y1jjrWSF=$vkjHiD&=#Y*Ft`(GOiQDHA}=M%M}^#o#=C=8O20guu=%g$(4FY=QCj;J1FG7u-b$1Ex^CQe=$b)Di7p^XJWSK;&R}hh_5hA7F4$A)kZ~E($ diff --git a/target/classes/hello/model/Greeting.class b/target/classes/hello/model/Greeting.class deleted file mode 100644 index f875277914303b411d510e45ee094e441fbdc76c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmZuu%SyvQ6g`tiV{7^_t@Vw%YXh2%JH<^wu>@UI3NF)hXs4tJ#MHkM6fA-ZKfsR? z?0D}nny=iIsZ`u_L?aE5~tbZix&VOyFV1G@(H7!)yNU|j~okHUn934`TMyeH2I zyl~|7l30YJbB4l&2t{(q&}?;A`|Uo1)`^Ckq3Vi|-_E839^ZR|fGU<7`CicXVj=Uq zs3l|ZNNnzy2SMaa2^%=qG3QC9r;m7YL#wH+HZ518th3m!(Q2=5Kr_8)7W@24NX_zs z>QuhPL<##Q3NTEpp~%qqPnDte_wc*Hg!^<1((mJ#E~e8N6sn zK)FV~YQKZohjS?Q$sFn{l@yf8T4~!LE8#^{2wb815djHCUyZzsqzp?VIVoi}2%X6| s#3p;X{RZWkf{eV710R diff --git a/target/classes/hello/model/Quote.class b/target/classes/hello/model/Quote.class deleted file mode 100644 index 3ec6c6c7d3ee5544ff04f2ad4753558e032a5fd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcmZ`%?@!ZE6g_XWYgdbm!3OFO5OCf2Q5C)+e2~OXi^f1^{Mc>HC@JkSS`uUYpES{t zXyPB>A7#Avt+LsbGLW4Yq(1eeAmerRIfm?byB(^z74U;03)y0rlGPW4c^up1Zyu+LvM1_3aiX z=~j=zQKi75RnO{IPN+d(uIUBtoA|Qr4$hpmFWJJ5& zZgeJS`KV^%8J?TCk2yZQAhA1Z(&Zx)Ma*+@-$V%u z0`rr?C5Aw8O!c;X;dUaD>Gb<<(53&HWyh35i8ivdYMo5~wej_Ta3iwAyX&z|Z)}#{ zVvatVPM&BW+Vk}0Xdqe_DSA)$g7)2?5Fc)kE6og{G`>Nltymi(U(!YieTYKwGbM&F zzDT%o0tOUNp|d#x!V;D#5_oV+VpGH}>2h@KX*oGIinRk8T5GR;+Hc>#d&NqAkt8#ZQb%-NV%80vbdzZiAbf}XF?Sb6Tf^xTwzyApT2@Gei~XilL#A4EaA zpipehJW(hu#a&kHT?r!p(N=HWPu9HkkUL|#@QIfM5}VCZx*7Bp4zFzbVHmqT)`sqC z(0joQ!Y_q^AEhL*`+k~9DYurFmo?F5yp<@ZWlHD;(N;>1a^LU7QJ3;NTS>xF(Wy|+ zlTXx&G_)44`e{y%X-}9llw#L=tzh-yDBWbAuYHg774gYH{3OkU4x7S(i4{?9#E)$F z>2F3VOtfb5WEvSx8n32F5N#;z|Ctzi(T1DtvYF~C{pk4j12Mb4+rx7*z#8^q#Kz4U z7BEx89t_*KRl{v8+PG8067I_5o;>c$_JbPQIIS@Gujwd^=*ywiJYIk9cj%_6==z<| zOT09QBUc*9=BY6Lm+Qn!6veL;_T`+@@@GlhQ~#EoKThUy z-K0;uv9oCv;%5qn^xfKlu191haBnB=V0Lr4*}2>XC!a*F7{&c>ZyFoZ{D}`ip~i1P z#>@YJGS{3spQDTxxUcxGwLe3(w^8_r;(NvgjPW^)qMV_`+95{!bfojKA9Y3w2QY51 z-Y~n&y{YyG6t_{DElo^LZNr+i+Kp1f+D7>|@G-)IG!?>*5^j=!La>m57y`oKAR1ca z6b^A!5DH9iRb;KyO%Z97G7qB(ifgs5S(W_PU^U6(8XO*?p!EXAL2_w zw|Y7X&Zgr*kevI2P?~%3&<`*CM9V!dTIrRZDD3vGf-sD|F?&PrJigIG4lj*@^fQ$; z+MOb8rOEtrv%UURl+@VXzb(JUhNVJtfmnJ{a{*kczb%-wK6||)YMg#NO@_fIExT~C zC%%$}yQso-QAWkZh6D!{h5Fh)6t)-se926~Ax*StuL(m4crt_|%cNnhfF8nS+~n;w zvtllFe?ooFU^PaEZD6Ct(-uzxCkWf9Gt)WjG75pmJSX@8;~NVGguu>^XiySz;Xw+e-rt3sNELhcm{F;|7`QOJWkgvfG5$o)bg z)~b;GLLqy_LabFG;_lHMLd0DWQl-?nH6gcVak~xiHrsIb#SCWmCujCoiFXb8J^8;WJmk&5qkoNMrN96H diff --git a/target/classes/hello/model/Value.class b/target/classes/hello/model/Value.class deleted file mode 100644 index 862a68f17d303c4c370907d46f8531959e3c75f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1111 zcmZ`%?@!ZU5PsgW{+dO`3QPrM0=jN6s=_yf50aReEE}@YKL1C#6$o%YBJ@^a$};#&e+Cd*F{P*H$}6^e`$gbMD^N$^I< za)bAT*PwcA&R9hWQMr)l?o*AAZEku$3vQwf|nt1$5ipn}LHC`MKULUE=6Va!M gtj;7-rMpO1H9K@9)jq+1Z0b|0o}wnfKoBzTWS> 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 diff --git a/target/classes/public/index.html b/target/classes/public/index.html deleted file mode 100644 index 566549b..0000000 --- a/target/classes/public/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - - - - \ No newline at end of file From 662d1424ededb2346bf7a90fff3cd4e281c90859 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 21:55:59 +0000 Subject: [PATCH 2/5] feature(gradle): target Java 11 toolchain; wrapper 6.9.4; jdbc/h2 parity Co-Authored-By: derek.wu --- build.gradle | 18 +++++++++++++----- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 0 3 files changed, 14 insertions(+), 6 deletions(-) mode change 100644 => 100755 gradlew diff --git a/build.gradle b/build.gradle index 09f1083..c164da4 100644 --- a/build.gradle +++ b/build.gradle @@ -22,11 +22,19 @@ repositories { mavenCentral() } -sourceCompatibility = 1.8 -targetCompatibility = 1.8 +java { + toolchain { + languageVersion = JavaLanguageVersion.of(11) + } +} -dependencies { - compile("org.springframework.boot:spring-boot-starter-web") - testCompile("junit:junit") +compileJava { + options.encoding = 'UTF-8' } +dependencies { + implementation("org.springframework.boot:spring-boot-starter-web") + implementation("org.springframework.boot:spring-boot-starter-jdbc") + runtimeOnly("com.h2database:h2") + testImplementation("junit:junit") +} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a2ff3cc..ddfac6f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.4-bin.zip diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 From 4bd5b5f4410da97ee5e328ccfa4ea08edee2a5f1 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 21:55:59 +0000 Subject: [PATCH 3/5] feature(ci): add JDK 11 (Temurin) GitHub Actions workflow with Maven+Gradle cache Co-Authored-By: derek.wu --- .github/workflows/ci.yml | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..48005ce --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,40 @@ +name: CI (JDK 11) + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + maven: + name: Maven build (Temurin 11) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 11 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '11' + cache: maven + + - name: Build and verify + run: ./mvnw -B -e clean verify + + gradle: + name: Gradle build (Temurin 11) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 11 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '11' + cache: gradle + + - name: Build + run: ./gradlew --no-daemon clean build From 66bf1ee842eecb6732070d2391c018b174b24475 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 21:56:19 +0000 Subject: [PATCH 4/5] bug(build): ignore build output dirs (target/, build/, .gradle/) Co-Authored-By: derek.wu --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 57f1cb2..aef0a14 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ -/.idea/ \ No newline at end of file +/.idea/ +target/ +build/ +.gradle/ +*.class From e8215b7bff1ba30723680437c6c212d6eb742b25 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 21:56:19 +0000 Subject: [PATCH 5/5] feature(docs): add MIGRATION_NOTES.md and require JDK 11 in README Co-Authored-By: derek.wu --- MIGRATION_NOTES.md | 110 +++++++++++++++++++++++++++++++++++++++++++++ README.md | 26 +++++++++-- 2 files changed, 132 insertions(+), 4 deletions(-) create mode 100644 MIGRATION_NOTES.md diff --git a/MIGRATION_NOTES.md b/MIGRATION_NOTES.md new file mode 100644 index 0000000..b48963e --- /dev/null +++ b/MIGRATION_NOTES.md @@ -0,0 +1,110 @@ +# Java 8 → Java 11 Migration Notes + +This document summarizes the migration of `springboot-java8` from Java 8 to +**Java 11 (LTS)**. The goal was a minimal, behavior-preserving migration: upgrade +the build toolchain and CI to JDK 11, replace anything removed from the JDK, and +keep the application code unchanged. + +## Summary + +| Area | Before | After | +| --- | --- | --- | +| Java language/runtime target | 8 (`java.version=1.8`) | 11 (`maven.compiler.release=11`) | +| Maven packaging | `pom` (sources never compiled) | `jar` (sources compiled + repackaged) | +| Maven wrapper | 3.3.9 | 3.9.9 | +| maven-compiler-plugin | inherited 3.7.0 | 3.11.0, `11`, `-Xlint:all -Werror` | +| maven-surefire-plugin | inherited 2.21.0 | 3.2.5 | +| maven-failsafe-plugin | not configured | 3.2.5 | +| maven-javadoc-plugin | not configured | 3.6.3, doclint disabled | +| maven-enforcer-plugin | not configured | 3.5.0, `requireJavaVersion [11,)` | +| Gradle wrapper | 4.6 (does not run on JDK 11) | 6.9.4 | +| Gradle Java target | `sourceCompatibility = 1.8` | toolchain `languageVersion = 11` | +| CI | none | GitHub Actions, Temurin 11, Maven + Gradle | + +## Baseline (Java 8) + +A Java 8 baseline was captured before any changes: + +- `JAVA_HOME` = Temurin/OpenJDK `1.8.0_492` +- `./mvnw -B clean package` → `BUILD SUCCESS` + +Note: with the original `pom`, the Maven build never invoked +the compiler, so the "baseline" Maven build did not actually compile the `hello.*` +sources. The Gradle build was the only one that compiled code. This is called out +because it changes what "parity" means here (see below). + +## Build tooling changes + +### Maven (`pom.xml`) + +- **`packaging` changed from `pom` to `jar`.** As a `pom` project the + `maven-compiler-plugin` and `maven-surefire-plugin` never ran, so the Java 11 + `release` flag would have had no effect. Switching to `jar` makes Maven actually + compile the sources under `--release 11` and produce a runnable Spring Boot jar + via `spring-boot-maven-plugin:repackage`. +- Replaced `1.8` with + `maven.compiler.release=11` plus UTF-8 source/reporting encoding. +- Added explicit, JDK-11-compatible plugin versions: + `maven-compiler-plugin` 3.11.0 (`11`, `-Xlint:all`, + `-Werror`), `maven-surefire-plugin` 3.2.5, `maven-failsafe-plugin` 3.2.5, + `maven-javadoc-plugin` 3.6.3, `maven-enforcer-plugin` 3.5.0 enforcing + `requireJavaVersion [11,)`. +- Added `spring-boot-starter-test` (test scope) so the project has a standard test + source set; surefire reports `No tests to run` (the project ships no tests). +- Upgraded the Maven wrapper from 3.3.9 to 3.9.9 — the older plugin-aware tooling + (surefire/enforcer 3.x) requires Maven 3.6.3+. + +### Gradle (`build.gradle`) + +- Upgraded the Gradle wrapper from 4.6 to 6.9.4. Gradle 4.6 cannot run on JDK 11. +- Replaced `sourceCompatibility/targetCompatibility = 1.8` with a Java + **toolchain** pinned to `JavaLanguageVersion.of(11)`. (Gradle rejects combining a + project-level toolchain with `source/targetCompatibility`, so the latter were + removed.) +- Modernized the legacy `compile`/`testCompile` configurations to + `implementation`/`testImplementation`. +- **Parity fix:** added `spring-boot-starter-jdbc` and `com.h2database:h2`. The + original Gradle build only declared `spring-boot-starter-web`, so it failed to + compile `hello.Application` (which uses `JdbcTemplate`). These deps already + existed in `pom.xml`; adding them brings the Gradle build to parity with Maven. + +## Removed JDK modules (Java EE / CORBA / JavaFX) + +A scan of the source (`javax.xml.bind`, `javax.activation`, `javax.xml.ws`, +`com.sun.*`, `sun.misc.*`, Nashorn, `javafx.*`, CORBA / `org.omg.*`) found **no +usages**. No external replacement dependencies (JAXB, JAX-WS, JavaFX, Activation) +were required. + +## Encapsulation / illegal reflective access + +The application code triggers no illegal reflective access warnings when compiled +or packaged on JDK 11, so **no `--add-opens` flags were added**. The only reflective +access warning observed comes from Gradle 6.9.4's own Groovy runtime during the +build (not from application code); it disappears with a newer Gradle and is out of +scope for this behavior-preserving migration. + +## Security / TLS, GC, logging + +No code or configuration depends on TLS protocol/cipher pinning, keystore type, or +GC/JVM tuning flags (the only runtime config is the optional `server.port` in +`application.properties`). Java 11 defaults (TLS 1.3, PKCS12 keystores, G1 GC, +unified logging) therefore apply with no changes needed. + +## Validation + +- `./mvnw -B clean verify` on **JDK 11** → `BUILD SUCCESS` (compiles with + `-Xlint:all -Werror`, enforcer confirms Java 11, jar repackaged). +- `./gradlew --no-daemon clean build` on **JDK 11** → `BUILD SUCCESSFUL`. +- No compiler warnings under `-Xlint:all`. +- Coverage is unchanged (the project ships no tests, so coverage is 0% before and + after; CI is green on the build). + +## Follow-ups (out of scope) + +- Spring Boot 2.0.2 / Spring 5.0 predate official Java 11 support. Compilation and + packaging are clean on JDK 11, but a future PR should upgrade to Spring Boot + 2.1+ (ideally 2.7.x) for fully supported Java 11 runtime behavior. +- Add an actual test suite (e.g. `@SpringBootTest`) so CI verifies runtime + behavior, not just compilation. +- Resolve Gradle deprecation warnings by moving to Gradle 7/8 (requires the Spring + Boot upgrade above, since the 2.0.2 Gradle plugin is incompatible with Gradle 7+). diff --git a/README.md b/README.md index 2b09400..85897f3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ # springboot-java8 + +> **Now builds and runs on Java 11 (LTS).** The build toolchain and CI target +> JDK 11. See [`MIGRATION_NOTES.md`](MIGRATION_NOTES.md) for migration details. + The project is made on spring boot. The project summarize the new features present in Java 8. It contain list of harcoded topics list. You can call the apis's with POSTMAN to add,delete,update Topic list In addition, it uses @@ -76,20 +80,34 @@ GET /datetime ### Prerequisites -1) Java sdk +1) JDK 11 (e.g. Eclipse Temurin 11) 2) POSTMAN ### Installing - - ``` 1) Download or clone 2) Import the project -3) Run on location machine +3) Run on local machine 4) Open Postman, to call API's ( localhost:8080 ) ``` +### Building & Running (JDK 11) + +This project can be built with either Maven or Gradle. Both target Java 11. + +Maven: +``` +./mvnw clean verify # compile, run tests, build the jar +java -jar target/gs-spring-boot-0.1.0.jar +``` + +Gradle: +``` +./gradlew clean build # compile, run tests, build the jar +java -jar build/libs/gs-spring-boot-0.1.0.jar +``` + ## Helpful Links Spring: