From 1bcfb543b17d02b8d13f58df5c2196d9273a85b9 Mon Sep 17 00:00:00 2001 From: amousavigourabi <28668597+amousavigourabi@users.noreply.github.com> Date: Sun, 28 Dec 2025 17:03:04 +0100 Subject: [PATCH] Initial move to Gradle --- .github/workflows/java.yml | 4 +- .gitignore | 1 + .mvn/wrapper/maven-wrapper.jar | Bin 62545 -> 0 bytes .mvn/wrapper/maven-wrapper.properties | 2 - build.gradle.kts | 69 ++++ config/checkstyle-suppressions.xml | 33 -- config/checkstyle.xml | 440 ----------------------- gradle.properties | 1 + gradle/libs.versions.toml | 18 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 45633 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 248 +++++++++++++ gradlew.bat | 93 +++++ mvnw | 308 ---------------- mvnw.cmd | 205 ----------- pom.xml | 389 -------------------- settings.gradle.kts | 1 + 17 files changed, 440 insertions(+), 1379 deletions(-) delete mode 100644 .mvn/wrapper/maven-wrapper.jar delete mode 100644 .mvn/wrapper/maven-wrapper.properties create mode 100644 build.gradle.kts delete mode 100644 config/checkstyle-suppressions.xml delete mode 100644 config/checkstyle.xml create mode 100644 gradle.properties create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat delete mode 100644 mvnw delete mode 100644 mvnw.cmd delete mode 100644 pom.xml create mode 100644 settings.gradle.kts diff --git a/.github/workflows/java.yml b/.github/workflows/java.yml index 35667f2..eeee6cc 100644 --- a/.github/workflows/java.yml +++ b/.github/workflows/java.yml @@ -19,6 +19,6 @@ jobs: with: java-version: ${{ matrix.java }} distribution: 'corretto' - cache: maven + cache: gradle - name: Verify - run: mvn -B verify --file pom.xml + run: gradle check diff --git a/.gitignore b/.gitignore index 65f20b1..1eaf7a0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ target/ !.mvn/wrapper/maven-wrapper.jar !**/src/main/**/target/ !**/src/test/**/target/ +.gradle/ ### IntelliJ IDEA ### .idea/ diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar deleted file mode 100644 index 9c13ebbddbe4cf8eb9080162a8949c01db6085a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62545 zcmb5V1CS=sk~Z9!wr$(CZEL#U=Co~N+O}=mwr$(Cds^S@-Tij=#=rmlVk@E|Dyp8$ z$UKz?`Q$l@GN3=8fq)=^fVx`E)Pern1@-q?PE1vZPD);!LGdpP^)C$aAFx&{CzjH` zpQV9;fd0PyFPNN=yp*_@iYmRFcvOrKbU!1a*o)t$0ex(~3z5?bw11HQYW_uDngyer za60w&wz^`W&Z!0XSH^cLNR&k>%)Vr|$}(wfBzmSbuK^)dy#xr@_NZVszJASn12dw; z-KbI5yz=2awY0>OUF)&crfPu&tVl|!>g*#ur@K=$@8N05<_Mldg}X`N6O<~3|Dpk3 zRWb!e7z<{Mr96 z^C{%ROigEIapRGbFA5g4XoQAe_Y1ii3Ci!KV`?$ zZ2Hy1VP#hVp>OOqe~m|lo@^276Ik<~*6eRSOe;$wn_0@St#cJy}qI#RP= zHVMXyFYYX%T_k3MNbtOX{<*_6Htq*o|7~MkS|A|A|8AqKl!%zTirAJGz;R<3&F7_N z)uC9$9K1M-)g0#}tnM(lO2k~W&4xT7gshgZ1-y2Yo-q9Li7%zguh7W#kGfnjo7Cl6 z!^wTtP392HU0aVB!$cPHjdK}yi7xNMp+KVZy3_u}+lBCloJ&C?#NE@y$_{Uv83*iV zhDOcv`=|CiyQ5)C4fghUmxmwBP0fvuR>aV`bZ3{Q4&6-(M@5sHt0M(}WetqItGB1C zCU-)_n-VD;(6T1%0(@6%U`UgUwgJCCdXvI#f%79Elbg4^yucgfW1^ zNF!|C39SaXsqU9kIimX0vZ`U29)>O|Kfs*hXBXC;Cs9_Zos3%8lu)JGm~c19+j8Va z)~kFfHouwMbfRHJ``%9mLj_bCx!<)O9XNq&uH(>(Q0V7-gom7$kxSpjpPiYGG{IT8 zKdjoDkkMTL9-|vXDuUL=B-K)nVaSFd5TsX0v1C$ETE1Ajnhe9ept?d;xVCWMc$MbR zL{-oP*vjp_3%f0b8h!Qija6rzq~E!#7X~8^ZUb#@rnF~sG0hx^Ok?G9dwmit494OT z_WQzm_sR_#%|I`jx5(6aJYTLv;3U#e@*^jms9#~U`eHOZZEB~yn=4UA(=_U#pYn5e zeeaDmq-$-)&)5Y}h1zDbftv>|?GjQ=)qUw*^CkcAG#o%I8i186AbS@;qrezPCQYWHe=q-5zF>xO*Kk|VTZD;t={XqrKfR|{itr~k71VS?cBc=9zgeFbpeQf*Wad-tAW7(o ze6RbNeu31Uebi}b0>|=7ZjH*J+zSj8fy|+T)+X{N8Vv^d+USG3arWZ?pz)WD)VW}P z0!D>}01W#e@VWTL8w1m|h`D(EnHc*C5#1WK4G|C5ViXO$YzKfJkda# z2c2*qXI-StLW*7_c-%Dws+D#Kkv^gL!_=GMn?Y^0J7*3le!!fTzSux%=1T$O8oy8j z%)PQ9!O+>+y+Dw*r`*}y4SpUa21pWJ$gEDXCZg8L+B!pYWd8X;jRBQkN_b=#tb6Nx zVodM4k?gF&R&P=s`B3d@M5Qvr;1;i_w1AI=*rH(G1kVRMC`_nohm~Ie5^YWYqZMV2<`J* z`i)p799U_mcUjKYn!^T&hu7`Lw$PkddV&W(ni)y|9f}rGr|i-7nnfH6nyB$Q{(*Nv zZz@~rzWM#V@sjT3ewv9c`pP@xM6D!StnV@qCdO${loe(4Gy00NDF5&@Ku;h2P+Vh7 z(X6De$cX5@V}DHXG?K^6mV>XiT768Ee^ye&Cs=2yefVcFn|G zBz$~J(ld&1j@%`sBK^^0Gs$I$q9{R}!HhVu|B@Bhb29PF(%U6#P|T|{ughrfjB@s- zZ)nWbT=6f6aVyk86h(0{NqFg#_d-&q^A@E2l0Iu0(C1@^s6Y-G0r32qll>aW3cHP# zyH`KWu&2?XrIGVB6LOgb+$1zrsW>c2!a(2Y!TnGSAg(|akb#ROpk$~$h}jiY&nWEz zmMxk4&H$8yk(6GKOLQCx$Ji-5H%$Oo4l7~@gbHzNj;iC%_g-+`hCf=YA>Z&F)I1sI z%?Mm27>#i5b5x*U%#QE0wgsN|L73Qf%Mq)QW@O+)a;#mQN?b8e#X%wHbZyA_F+`P%-1SZVnTPPMermk1Rpm#(;z^tMJqwt zDMHw=^c9%?#BcjyPGZFlGOC12RN(i`QAez>VM4#BK&Tm~MZ_!#U8PR->|l+38rIqk zap{3_ei_txm=KL<4p_ukI`9GAEZ+--)Z%)I+9LYO!c|rF=Da5DE@8%g-Zb*O-z8Tv zzbvTzeUcYFgy{b)8Q6+BPl*C}p~DiX%RHMlZf;NmCH;xy=D6Ii;tGU~ zM?k;9X_E?)-wP|VRChb4LrAL*?XD6R2L(MxRFolr6GJ$C>Ihr*nv#lBU>Yklt`-bQ zr;5c(o}R!m4PRz=CnYcQv}m?O=CA(PWBW0?)UY)5d4Kf;8-HU@=xMnA#uw{g`hK{U zB-EQG%T-7FMuUQ;r2xgBi1w69b-Jk8Kujr>`C#&kw-kx_R_GLRC}oum#c{je^h&x9 zoEe)8uUX|SahpME4SEog-5X^wQE0^I!YEHlwawJ|l^^0kD)z{o4^I$Eha$5tzD*A8 zR<*lss4U5N*JCYl;sxBaQkB3M8VT|gXibxFR-NH4Hsmw|{={*Xk)%!$IeqpW&($DQ zuf$~fL+;QIaK?EUfKSX;Gpbm8{<=v#$SrH~P-it--v1kL>3SbJS@>hAE2x_k1-iK# zRN~My-v@dGN3E#c!V1(nOH>vJ{rcOVCx$5s7B?7EKe%B`bbx(8}km#t2a z1A~COG(S4C7~h~k+3;NkxdA4gbB7bRVbm%$DXK0TSBI=Ph6f+PA@$t){_NrRLb`jp zn1u=O0C8%&`rdQgO3kEi#QqiBQcBcbG3wqPrJ8+0r<`L0Co-n8y-NbWbx;}DTq@FD z1b)B$b>Nwx^2;+oIcgW(4I`5DeLE$mWYYc7#tishbd;Y!oQLxI>?6_zq7Ej)92xAZ z!D0mfl|v4EC<3(06V8m+BS)Vx90b=xBSTwTznptIbt5u5KD54$vwl|kp#RpZuJ*k) z>jw52JS&x)9&g3RDXGV zElux37>A=`#5(UuRx&d4qxrV<38_w?#plbw03l9>Nz$Y zZS;fNq6>cGvoASa2y(D&qR9_{@tVrnvduek+riBR#VCG|4Ne^w@mf2Y;-k90%V zpA6dVw|naH;pM~VAwLcQZ|pyTEr;_S2GpkB?7)+?cW{0yE$G43`viTn+^}IPNlDo3 zmE`*)*tFe^=p+a{a5xR;H0r=&!u9y)kYUv@;NUKZ)`u-KFTv0S&FTEQc;D3d|KEKSxirI9TtAWe#hvOXV z>807~TWI~^rL?)WMmi!T!j-vjsw@f11?#jNTu^cmjp!+A1f__Dw!7oqF>&r$V7gc< z?6D92h~Y?faUD+I8V!w~8Z%ws5S{20(AkaTZc>=z`ZK=>ik1td7Op#vAnD;8S zh<>2tmEZiSm-nEjuaWVE)aUXp$BumSS;qw#Xy7-yeq)(<{2G#ap8z)+lTi( ziMb-iig6!==yk zb6{;1hs`#qO5OJQlcJ|62g!?fbI^6v-(`tAQ%Drjcm!`-$%Q#@yw3pf`mXjN>=BSH z(Nftnf50zUUTK;htPt0ONKJq1_d0!a^g>DeNCNpoyZhsnch+s|jXg1!NnEv%li2yw zL}Y=P3u`S%Fj)lhWv0vF4}R;rh4&}2YB8B!|7^}a{#Oac|%oFdMToRrWxEIEN<0CG@_j#R4%R4i0$*6xzzr}^`rI!#y9Xkr{+Rt9G$*@ zQ}XJ+_dl^9@(QYdlXLIMI_Q2uSl>N9g*YXMjddFvVouadTFwyNOT0uG$p!rGF5*`1 z&xsKPj&;t10m&pdPv+LpZd$pyI_v1IJnMD%kWn{vY=O3k1sJRYwPoDV1S4OfVz4FB z$^ygjgHCW=ySKSsoSA&wSlq83JB+O-)s>>e@a{_FjB{@=AlrX7wq>JE=n@}@fba(;n4EG| zge1i)?NE@M@DC5eEv4; z#R~0aNssmFHANL@-eDq2_jFn=MXE9y>1FZH4&v<}vEdB6Kz^l)X%%X@E#4)ahB(KY zx8RH+1*6b|o1$_lRqi^)qoLs;eV5zkKSN;HDwJIx#ceKS!A$ZJ-BpJSc*zl+D~EM2 zm@Kpq2M*kX`;gES_Dd1Y#UH`i!#1HdehqP^{DA-AW^dV(UPu|O@Hvr>?X3^~=1iaRa~AVXbj z-yGL<(5}*)su2Tj#oIt+c6Gh}$0|sUYGGDzNMX+$Oi$e&UJt3&kwu)HX+XP{es(S3 z%9C9y({_fu>^BKjI7k;mZ4DKrdqxw`IM#8{Sh?X(6WE4S6-9M}U0&e32fV$2w{`19 zd=9JfCaYm@J$;nSG3(|byYDqh>c%`JW)W*Y0&K~g6)W?AvVP&DsF_6!fG3i%j^Q>R zR_j5@NguaZB{&XjXF+~6m|utO*pxq$8?0GjW0J-e6Lnf0c@}hvom8KOnirhjOM7!n zP#Iv^0_BqJI?hR5+Dl}p!7X}^NvFOCGvh9y*hgik<&X)3UcEBCdUr$Dt8?0f&LSur ze*n!(V(7umZ%UCS>Hf(g=}39OcvGbf2+D;OZ089m_nUbdCE0PXJfnyrIlLXGh2D!m zK=C#{JmoHY1ws47L0zeWkxxV=A%V8a&E^w%;fBp`PN_ndicD@oN?p?Bu~20>;h;W` ztV=hI*Ts$6JXOwOY?sOk_1xjzNYA#40dD}|js#3V{SLhPEkn5>Ma+cGQi*#`g-*g56Q&@!dg)|1YpLai3Bu8a;l2fnD6&)MZ~hS%&J}k z2p-wG=S|5YGy*Rcnm<9VIVq%~`Q{g(Vq4V)CP257v06=M2W|8AgZO0CC_}HVQ>`VU zy;2LDlG1iwIeMj?l40_`21Qsm?d=1~6f4@_&`lp~pIeXnR)wF0z7FH&wu~L~mfmMr zY4_w6tc{ZP&sa&Ui@UxZ*!UovRT})(p!GtQh~+AMZ6wcqMXM*4r@EaUdt>;Qs2Nt8 zDCJi#^Rwx|T|j_kZi6K!X>Ir%%UxaH>m6I9Yp;Sr;DKJ@{)dz4hpG>jX?>iiXzVQ0 zR$IzL8q11KPvIWIT{hU`TrFyI0YQh`#>J4XE*3;v^07C004~FC7TlRVVC}<}LC4h_ zZjZ)2*#)JyXPHcwte!}{y%i_!{^KwF9qzIRst@oUu~4m;1J_qR;Pz1KSI{rXY5_I_ z%gWC*%bNsb;v?>+TbM$qT`_U8{-g@egY=7+SN#(?RE<2nfrWrOn2OXK!ek7v`aDrH zxCoFHyA&@^@m+#Y(*cohQ4B76me;)(t}{#7?E$_u#1fv)vUE5K;jmlgYI0$Mo!*EA zf?dx$4L(?nyFbv|AF1kB!$P_q)wk1*@L0>mSC(A8f4Rgmv1HG;QDWFj<(1oz)JHr+cP|EPET zSD~QW&W(W?1PF-iZ()b|UrnB(#wG^NR!*X}t~OS-21dpXq)h)YcdA(1A`2nzVFax9rx~WuN=SVt`OIR=eE@$^9&Gx_HCfN= zI(V`)Jn+tJPF~mS?ED7#InwS&6OfH;qDzI_8@t>In6nl zo}q{Ds*cTG*w3CH{Mw9*Zs|iDH^KqmhlLp_+wfwIS24G z{c@fdgqy^Y)RNpI7va^nYr9;18t|j=AYDMpj)j1oNE;8+QQ)ap8O??lv%jbrb*a;} z?OvnGXbtE9zt;TOyWc|$9BeSGQbfNZR`o_C!kMr|mzFvN+5;g2TgFo8DzgS2kkuw@ z=`Gq?xbAPzyf3MQ^ZXp>Gx4GwPD))qv<1EreWT!S@H-IpO{TPP1se8Yv8f@Xw>B}Y z@#;egDL_+0WDA)AuP5@5Dyefuu&0g;P>ro9Qr>@2-VDrb(-whYxmWgkRGE(KC2LwS z;ya>ASBlDMtcZCCD8h+Awq1%A|Hbx)rpn`REck#(J^SbjiHXe-jBp!?>~DC7Wb?mC z_AN+^nOt;3tPnaRZBEpB6s|hCcFouWlA{3QJHP!EPBq1``CIsgMCYD#80(bsKpvwO)0#)1{ zos6v&9c=%W0G-T@9sfSLxeGZvnHk$SnHw57+5X4!u1dvH0YwOvuZ7M^2YOKra0dqR zD`K@MTs(k@h>VeI5UYI%n7#3L_WXVnpu$Vr-g}gEE>Y8ZQQsj_wbl&t6nj{;ga4q8SN#Z6cBZepMoyv7MF-tnnZp*(8jq848yZ zsG_fP$Y-rtCAPPI7QC^nzQjlk;p3tk88!1dJuEFZ!BoB;c!T>L>xSD<#+4X%*;_IB z0bZ%-SLOi5DV7uo{z}YLKHsOHfFIYlu8h(?gRs9@bbzk&dkvw*CWnV;GTAKOZfbY9 z(nKOTQ?fRRs(pr@KsUDq@*P`YUk4j=m?FIoIr)pHUCSE84|Qcf6GucZBRt;6oq_8Z zP^R{LRMo?8>5oaye)Jgg9?H}q?%m@2bBI!XOOP1B0s$%htwA&XuR`=chDc2)ebgna zFWvevD|V882V)@vt|>eeB+@<-L0^6NN%B5BREi8K=GwHVh6X>kCN+R3l{%oJw5g>F zrj$rp$9 zhepggNYDlBLM;Q*CB&%w zW+aY{Mj{=;Rc0dkUw~k)SwgT$RVEn+1QV;%<*FZg!1OcfOcLiF@~k$`IG|E8J0?R2 zk?iDGLR*b|9#WhNLtavx0&=Nx2NII{!@1T78VEA*I#65C`b5)8cGclxKQoVFM$P({ zLwJKo9!9xN4Q8a2F`xL&_>KZfN zOK?5jP%CT{^m4_jZahnn4DrqgTr%(e_({|z2`C2NrR6=v9 z*|55wrjpExm3M&wQ^P?rQPmkI9Z9jlcB~4IfYuLaBV95OGm#E|YwBvj5Z}L~f`&wc zrFo!zLX*C{d2}OGE{YCxyPDNV(%RZ7;;6oM*5a>5LmLy~_NIuhXTy-*>*^oo1L;`o zlY#igc#sXmsfGHA{Vu$lCq$&Ok|9~pSl5Q3csNqZc-!a;O@R$G28a@Sg#&gnrYFsk z&OjZtfIdsr%RV)bh>{>f883aoWuYCPDP{_)%yQhVdYh;6(EOO=;ztX1>n-LcOvCIr zKPLkb`WG2;>r)LTp!~AlXjf-Oe3k`Chvw$l7SB2bA=x3s$;;VTFL0QcHliysKd^*n zg-SNbtPnMAIBX7uiwi&vS)`dunX$}x)f=iwHH;OS6jZ9dYJ^wQ=F#j9U{wJ9eGH^#vzm$HIm->xSO>WQ~nwLYQ8FS|?l!vWL<%j1~P<+07ZMKkTqE0F*Oy1FchM z2(Nx-db%$WC~|loN~e!U`A4)V4@A|gPZh`TA18`yO1{ z(?VA_M6SYp-A#%JEppNHsV~kgW+*Ez=?H?GV!<$F^nOd+SZX(f0IoC#@A=TDv4B2M z%G-laS}yqR0f+qnYW_e7E;5$Q!eO-%XWZML++hz$Xaq@c%2&ognqB2%k;Cs!WA6vl z{6s3fwj*0Q_odHNXd(8234^=Asmc0#8ChzaSyIeCkO(wxqC=R`cZY1|TSK)EYx{W9 z!YXa8GER#Hx<^$eY>{d;u8*+0ocvY0f#D-}KO!`zyDD$%z1*2KI>T+Xmp)%%7c$P< zvTF;ea#Zfzz51>&s<=tS74(t=Hm0dIncn~&zaxiohmQn>6x`R+%vT%~Dhc%RQ=Cj^ z&%gxxQo!zAsu6Z+Ud#P!%3is<%*dJXe!*wZ-yidw|zw|C`cR z`fiF^(yZt?p{ZX|8Ita)UC$=fg6wOve?w+8ww|^7OQ0d zN(3dmJ@mV8>74I$kQl8NM%aC+2l?ZQ2pqkMs{&q(|4hwNM z^xYnjj)q6uAK@m|H$g2ARS2($e9aqGYlEED9sT?~{isH3Sk}kjmZ05Atkgh^M6VNP zX7@!i@k$yRsDK8RA1iqi0}#Phs7y(bKYAQbO9y=~10?8cXtIC4@gF#xZS;y3mAI`h zZ^VmqwJ%W>kisQ!J6R?Zjcgar;Il%$jI*@y)B+fn^53jQd0`)=C~w%Lo?qw!q3fVi{~2arObUM{s=q)hgBn64~)W0tyi?(vlFb z>tCE=B1cbfyY=V38fUGN(#vmn1aY!@v_c70}pa(Lrle-(-SH8Nd!emQF zf3kz0cE~KzB%37B24|e=l4)L}g1AF@v%J*A;5F7li!>I0`lfO9TR+ak`xyqWnj5iwJ$>t_vp(bet2p(jRD;5Q9x2*`|FA4#5cfo8SF@cW zeO{H7C0_YJ*P@_BEvm2dB}pUDYXq@G1^Ee#NY9Q`l`$BUXb01#lmQk^{g3?aaP~(* zD;INgi#8TDZ&*@ZKhx$jA^H-H1Lp`%`O{Y{@_o!+7ST}{Ng^P;X>~Bci{|Qdf1{}p z_kK+zL;>D30r6~R?|h!5NKYOi6X&I5)|ME+NG>d9^`hxKpU^)KBOpZiU^ z;|SzGWtbaclC-%9(zR-|q}kB8H&($nsB1LPAkgcm+Qs@cAov{IXxo5PHrH(8DuEMb z3_R#>7^jjGeS7$!`}m8!8$z|)I~{dhd)SvoH9oR9#LjO{{8O&r7w{d9V1z^syn&E6 z{DG0vlQF_Yb3*|>RzVop^{$mWp|%NDYj@4{d*-@O^<(=L=DMFIQHEp-dtz@1Rumd; zadt^4B#(uUyM6aeUJkGl0GfaULpR!2Ql&q$nEV^+SiDptdPbuJ=VJ)`czZ@&HPUuj zc5dSRB&xk)dI~;6N?wkzI}}4K3i%I=EnlKGpPJ9hu?mNzH7|H0j(mN3(ubdaps3GM z1i+9gk=!$mH=L#LRDf4!mXw0;uxSUIXhl|#h*uK+fQPilJc8RCK9GNPt=X^8`*;3$ zBBo77gkGB5F8a8)*OR10nK&~8CEMPVQyhY>i`PS{L^-*WAz$ljtU%zlG1lm%%U4Zw zms0oZR8b|`>4U1X*9JLQQ>m9MF5%ppoafz^;`7DbmmIENrc$hucekkE4I83WhT%(9 zMaE;f7`g4B#vl(#tNP8$3q{$&oY*oa0HLX6D?xTW3M6f<^{%CK4OE1Pmfue`M6Dh= z&Z-zrq$^xhP%|hU&)(+2KSSpeHgX^0?gRZ5wA8@%%9~@|*Ylux1M{WQ4ekG(T+_b` zb6I)QRGp%fRF)^T?i^j&JDBhfNU9?>Sl6WVMM%S?7< ze|4gaDbPooB=F4Y=>~_+y~Q1{Ox@%q>v+_ZIOfnz5y+qy zhi+^!CE*Lv-}>g^%G=bGLqD(aTN;yHDBH#tOC=X02}QU~Xdme``Wn>N>6{VwgU~Z>g+0 zxv0`>>iSfu$baHMw8(^FL6QWe;}(U>@;8j)t)yHAOj?SdeH;evFx-kpU@nT>lsrUt zqhV}2pD^5bC4786guG1`5|fK@pE6xcT#ns)vR|^?A08G62teHaE&p`ZrCBj_Swt*~dVt=5*RK6Y{% zABqK$X59BnrK3r3u=wxklRnA1uh+q`?T0kE1YhvDWF4OY#<(+V|R@R%tdkq2huF(!Ip+EpZF3zr*|9pmKHPo)Cu z;H+^s&`Ql}u=Jt~ZWj`bAw|i-3#7(2WuRU3DU{BW8`?!O?YO1M$*MMTsaEM!5Jyp~ z!gp6yR4$O%wQ8%dyz43ZPeoJwy;o;yg=S0^Y}%|)to>=N^`!3VMf1~}OZ`Dl$q&|w z9$!i3!i1uAgPTuKSWdBrDr*N$g=E#mdqfj*h;Z}OG`{n245+g;IKfdn!&gF2OtHaD zyGDzj@@d2!P(_Ux)3v;1ABTj__{w*kaRF-1YVU`})Acgk?(T*1YqEve3=5)8bkZK* z!Tus*e$h@^u z>#zV0771Bix~r&h2FJ9)%N{>s>?2tk1$bId)1#G;OKgn-U8jUo^AK;Hu)hQEi}swD(264kAS-SBCD$R(Ro0rh8~Le zzRwxbz_JHDbD+hTX15AWmVw!#rC)-zeZahQQmo6FG1)ah3uuyIuTMof}RO!`Y3^Fxn_-G$23RDOh(@NU?r6`*S?#E50)w zpcsgDZ-iO{;EesgDQq9;p*C#QH(sp~2w^zAJWaUL%@yo)iIL6y8;e_}=dwQc%k%;H zFt5lenH*`}LWd+fPqi;exJeRZgl&nLR%|a!%1x0RQ54cgyWBYrL>sskcAtPxi&8c( zw_K?sI*3n%S;lKiYpveBN08{rgV&-B1NN5Jiu07~%n#%&f!(R(z1)xsxtRBkg#+Lv zh21zX?aYDd_f}qdA`Os*j!eC<5)iUJ&Twj7?*p%vEOGElGhpRZsccM!<k}DeC;TY;rULQs3e}lZyP#UVb=6 zB$Dkm2FaHWUXr7<{R&46sfZ)&(HXxB_=e`%LZci`s7L6c-L7iF&wdmTJz`*^=jD~* zpOZ@jcq8LezVkE^M6D9^QgZqnX&x*mr1_Cf#R9R3&{i3%v#}V$UZzGC;Or*=Dw5SXBC6NV|sGZp^#%RTimyaj@!ZuyJ z6C+r}O1TsAzV9PAa*Gd!9#FQMl)ZLHzTr99biAqA(dz-m9LeIeKny3YB=*+|#-Gq# zaErUR5Z*Wh^e<+wcm70eW;f-g=YTbMiDX)AznDM6B73)T4r%nq+*hKcKF?)#vbv?K zPMe=sFCuC*ZqsBPh-?g!m*O`}6<}Pfj}Y1n9|Y@cUdD5GX_)6Sx9pPfS7 zxkt?g6ZwJ+50C7qrh6dMFmr7qah`FskT_H=GC92vkVh$WfZa2%5L99_DxyM{$#6HQ zx$VR-Wwt!q9JL2{ybEGJr$^?!V4m_BqDqt!mbs=QjHf340+^a{)waVvP0+98(BA$M ztWr&sM=juyYgvf`(SC}+y@QtYgU>0ghJ6VbU}|kEraR&&W%#;!#KI?le%g`e>ZVPiDrneh#&1(Y?uiMo^f5qo@{JEr(p9>8GhDa+PC9yG;lX+D?hQ^fZB&Sdox219zUj_5;+n<0@Wi3@DK`MU8FM!OFJ z8*_mTA-u!Ab#95FRVWTIqAL#BVQGxE_s?>Ql|@0o9vos&r<_4d!+Q6(_270)6#lu$ zV!j$a?_V0I<(3Z=J7C-K0a^Kc1Go9p&T6yQeAD+)dG-$a&%Fo0AOte~_Z&_m2@ue~ z9cKFf-A41Dz31Ooj9FSR`l?H5UtdP?JS=UU$jF#znE1k@0g%K?KQuwZkfDI3Ai)(q z#x_Yo6WR_Y@#6I_02S&NpcP<%sw!!M_3#*8qa+*4rS@x=i{-2K#*Qr)*Q$-{<_(<| z0730e+rubnT38*m;|$-4!1r6u&Ua2kO_s-(7*NGgDTe##%I>_9uW;X__b_k)xlv$; zW%K2hsmr>5e^Z~`tS-eUgWmSF9}Yg8E}qydSVX0nYZMX_x94QK?tw2>^;raVTqstR zIrNAX2`X~|h->dTOb9IrA!i5INpLV}99ES|i0ldzC`;R$FBY5&7+TIy8%GO8SZ37_ zw=^Swk?z+j-&0-cTE|LU0q@IKRa&C6ZlXbSa2vN5r-)*f<3{wLV*uJUw980AFkWN7 zKh{?97GmVu-0rs9FB6ludy|n`gN5p~?y51aJzBg6#+-=0pWdZ2n4xTiQ=&3As-!-6 zFlb|ssAJEJL#s8(=odfz8^9b#@RrvNE4gjuEITzAd7R4+rq$yEJKXP?6D@yM7xZ&^ z@%jnE3}bteJo{p(l`hu`Yvzg9I#~>(T;>c;ufeLfc!m3D&RaQS=gAtEO-WbI+f_#| zaVpq-<%~=27U8*qlVCuI6z9@j)#R!z3{jc>&I(qT-8IBW57_$z5Qm3gVC1TcWJNc% zDk?H3%QHno@fu9nT%L^K)=#sRiRNg|=%M zR;8BE)QA4#Dsg^EakzttRg9pkfIrF3iVYVM#*_+#3X+~qeZc^WQJvEyVlO@9=0pl!ayNOh|{j0j^a z+zi_$_0QKhwArW)sJ$wji;A`?$ecbr?(4x5%2pLgh#wggbt)#T^2R3a9m+>GcrUxU z*u-WTgHAN*e!0;Wa%1k)J_P(Vdp>vwrROTVae@6Wn04q4JL-)g&bWO6PWGuN2Q*s9 zn47Q2bIn4=!P1k0jN_U#+`Ah59zRD??jY?s;U;k@%q87=dM*_yvLN0->qswJWb zImaj{Ah&`)C$u#E0mfZh;iyyWNyEg;w0v%QS5 zGXqad{`>!XZJ%+nT+DiVm;lahOGmZyeqJ-;D&!S3d%CQS4ZFM zkzq5U^O|vIsU_erz_^^$|D0E3(i*&fF-fN}8!k3ugsUmW1{&dgnk!|>z2At?h^^T@ zWN_|`?#UM!FwqmSAgD6Hw%VM|fEAlhIA~^S@d@o<`-sxtE(|<><#76_5^l)Xr|l}Q zd@7Fa8Bj1ICqcy2fKl1rD4TYd84)PG5Ee2W4Nt@NNmpJWvc3q@@*c;~%^Vasf2H`y z+~U-19wtFT?@yIFc4SE_ab?s@wEUfSkOED}+qVjjy>=eac2^S^+|_3%cjH%EUTJ&r znp9q?RbStJcT*Vi{3KDa^jr4>{5x+?!1)8c2SqiCEzE$TQ+`3KPQQnG8_Qk<^)y_o zt1Q^f{#yCUt!1e(3;E6y?>p+7sGAYLp`lA3c~Y`re9q&`c6>0?c0E2Ap5seFv92#X z1Vldj!7A8@8tWr&?%;EBQ_Fwd)8A3!wIx`V!~~h(!$pCy7=&*+*uIzG@*d%*{qG#4 zX0^}}sRN^N=p{w(+yjv%xwb!%lnVTE7l1l6gJwQmq_G83J&Y98$S!r*L8}IiIa2E= zE!0tbOuEDb*No0-KB{zjo1k#_4FHtr{!)>o+Y@bll}Sa6D^xktI0H&l{jKAK)A(iz zB-N00F?~Z}Y7tG+vp)-q*v71(C}65$-=uXx^|R$xx9zZip-V>Hqeyfd(wteM)+!!H z$s+>g4I@+`h2>C|J;PhvtOq)`xm4;CyF}R<)!ma3T{Vf_5|zo;D4YI4ZDBkE(vMeE zb#ZV;n}CgA0w8x!UC2&5Z(K)9bibj#?~>R(72lFx_Am~jS?;7mo~p+05~XGD+(wV4 zEVYnf0N5+-7O+Gc1L!sPGUHv<6=cV8}*m$m`kBs@z zy;goR(?J^JrB7uXXpD00+SD0luk!vK3wwp(N%|X!HmO{xC#OMYQ&a7Yqv-54iEUK4 zVH;)rY6)pUX~ESvQK^y8Y)8yG%~CW>MF~2syYcsxi3BZCJ&QCOcgf^eX{B7_F^rqo6R_LxgHAg?W$@-s`6m3sitMCQETvv-kUcPnp1~Oo+M`s z+;6~3ZweQu*${o!ReSUWdA4Utpoa0#wWg2;Vx z%0Cwb;_sY74AwEX7a=s4Ld^XJuafv-I9*rM4s0s|XX@zjLkl-Mop7(#t*U=Yz%RIk z+-&x&g>vGswfPAfuSW?N<*^ozO&R_fdxSQ=bYQ(zTtq#keGTnS{d_z`*2n#pcXUXEhl-F!$rD0X!D(S2%nhE+^6qQ;^CCo@DxP4d* zC_~I*iA!3LXH3Z2Xo&z@R{xbgwyTqrb+$gP%}j;Uy5bTX|GRC^x@mt-p2hypBP(Z> zVu$%hv0bV@B6F(A<9;QSRB%vd(;={3Ux{y4!LKI`(rHI<6Yd%0$>Rk$Em_%6r#req z9eRFK4Ok&+>YM;|r6=5CHC2HS%@NKVimea2gDuR?U#*HT2lLb9$X zwcf9ws`5r?W>!|xJ)*(yXKGn*BTdpf~Vz{anL3wLAY?nmsLWhXlQAqVIAze<1RE?ZqiLby* z7pcARlB}j6H03keX~|u;EC@@oUUMm1RdMZ%q$u)T$D@vO?1RG__-$|_@) zTKY>6_VNl!^yHAd#gNRY^7kc{Doj7{r%td252%zDK(d{2cTU}~6;K7_=pMN5z458v zE)jzjR9`#aNZj}ppjZPjmZE#~J$QNBkKPYjj4s`z#VSz@5Dc(>GyKY|3cJ z5+8mdD;*TC>@UK#?ss7=NSL9w5<&zp`A*njH1A<*F$J=F#h}{Wm%lnX?OI`D?^tS~DL5eY;e2g1!1KrC8ke zDcu8wZXdW$Rw$0BY>)aULyG;$4pfYRPjzH%ak*-Cr&f0W|HtGBhx{Y*Ol~CVWxqK3 z=`arulD$ITDL{>UZcjM*O8mLUxerj`v53gf)TSept9B?*+tS^d#kw1e#1X1Sz2Bnh zxapzFTR=xKLgh|9{T@2P$gq1%^aM5r@~3r?Y?bx|v+E^J1w@R06$4N4in71Dlmvjw$6z)vA*_jJo7VCD+$+3}T9gV}Ku#zxj zizwq(^4a?Zah(RKBrnAyita@m#jXnh+|NBd3;K5rFqPz`Yq@BMaZm&mIH(+5v9U(( z^-UgI8Qo-LE7`SqY8SDcvA=&@@UnI@ozafMTJEJ5Leq#%*r^~m$%GAZbVR0=ljunf z$&iE!#fXRY%o=0B@k`CYOH~jJ!}hg}?JD=?ON0*mxXfB!TFWj(-dY3~h)Yt-M4OyM zXxVbLkD>Bz4-bZej%&R+hal~4YAn}!p!U`6%U6z^k0Y2V)v52Bw1(v~++@}iXI$sb zE`OCt2R*%XlAUspL}gnk(=iNqk|U?ZOvk9@9xqJ01CU0_Zt*iNAV41((TDAMCT=me zckf5spm?Q8&7l;L+%oQ-pviNLvtSUnL(^CYgC0&GHbxNoB2Pykw4!hJUAly(cSvti z$3BU>`h9f=Di1%PeS&|pO|MO%^8_t9^lbONp|V8qR!6?2+kws)6s z^cP>d?V^Fkuwd|E789)N?LunhC(uOD*)tBv-glM)+(K)HqUAi;(Y42Outs$4% zRAAkb2wo;X%hN%p#ZX3gK2qcF{H?|mc3P!3ykMVZkn+hF;($S%TD+%FI&XFB#CI?ND#pABFjb% z5McxmVkzMeMvRHY2+TYrv}3!IUHZq;ekz*JG!~YUs+P~e*TU7}bi$V<)mzoo&6!(h zmd{fyN^d*QB#C22B*i-?U|rAG?I$^&*X-Zw*S9ZFaNN+l1oboF*oPFOiuK^HfJ0!- z_SGz9!J?L(u-J>AC44^Kc-VBVP=_h151e~^{(z+s0%d?GB2G;zk!D}?e^`p5FZR|4 z=~g+U}HDA%j2`+pU>5Wz26b}~Cw$wcT@89+pUq>#LH z7J}xQ@Wn#7jWbq{Q;ZiE2t_Cqgy^$?6(qDs36rNlQOShetQ6M!@qbQd%8zmUnTZ1J zFLZ_+2TmzX#5(Zbt&_2*jJxQy@Hd7@f!SOx-wHSEJo>;yvD_;`AtvXdlGEn#O?|~8 zbty|EST0wiWp+sm;XWG_u~Mj07iOmbUN&(S=%nYUSXg)WzYXK3X0(=0RVk3*Z;rrR zoaXntF`HZz1QagpNIwroVN8k0^w+!kSv%fSQ?wXl_P!!eV=h=DG*VH^6E4Ez6vx3F zy*Fa^Cv4;kli6|7sMv)^;It*tj5kqQV})nJ^yT?ga#{a@S>-@^TqTw(fPpKe6uL1P zMpo4c;fBOiVk!{NO_?0nv6-0(WdKp6lB8uiBo$oOYe zbv9en*N5zuA;6>=;)81G5#be<3Yz3l0<#!vlT|OkN1o*a@oz=wFU&Iz`-Hx$x{RI_q)!A&NAxa1 zWj?B}5vl>+V5SJMqi#&LVb3&!Fp7x394E@|0gxquq51;{&Sa#01P5xdKv+5k9^7u|vhZ(D|+ya7~E}wz& zX8^nc9G~id2b~G_Ik*;T;X)fB@hr!_r`gNDZsLbW5naXx4Ejny*#qImcv25Sthpbe zc(^iFm`SmZUi$sn!VZ%0J<@kFAzn@7^2>CXt=}y@5e>(U9O(~nElGlt8Gg+Oq)yE~ zN?ZJxlTSfHvQjKYpM6dzmnV)S?I7y`DoATZ8%!&dR@$S`8Gz+cen5j)a^2VD%mx

VN1ZO& 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 diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index 462686e..0000000 --- a/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,2 +0,0 @@ -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.3/apache-maven-3.9.3-bin.zip -wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..0792d23 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,69 @@ +plugins { + `java-library` + `maven-publish` + pmd + jacoco + alias(libs.plugins.spotless) +} + +repositories { + mavenLocal() + maven { + url = uri("https://repo.maven.apache.org/maven2/") + } +} + +dependencies { + api(libs.slf4j) + testImplementation(libs.assertj) + testImplementation(libs.jupiter.api) + testImplementation(libs.jupiter.params) + testRuntimeOnly(libs.jupiter.engine) + testRuntimeOnly(libs.junit.launcher) + compileOnly(libs.lombok) + annotationProcessor(libs.lombok) +} + +spotless { + java { + removeUnusedImports() + palantirJavaFormat().formatJavadoc(true) + formatAnnotations() + trimTrailingWhitespace() + leadingSpacesToTabs() + leadingTabsToSpaces(2) + } +} + +group = "me.atour" +version = "1.0.0-SNAPSHOT" +description = "Baseline project for Java 25 LTS with Gradle" +java.sourceCompatibility = JavaVersion.VERSION_25 + +publishing { + publications.create("maven") { + from(components["java"]) + } +} + +tasks.test { + useJUnitPlatform() + finalizedBy(tasks.jacocoTestReport) +} + +tasks.jacocoTestReport { + dependsOn(tasks.test) + reports { + xml.required = false + csv.required = false + html.outputLocation = layout.buildDirectory.dir("jacocoHtml") + } +} + +tasks.withType() { + options.encoding = "UTF-8" +} + +tasks.withType() { + options.encoding = "UTF-8" +} diff --git a/config/checkstyle-suppressions.xml b/config/checkstyle-suppressions.xml deleted file mode 100644 index 1117f19..0000000 --- a/config/checkstyle-suppressions.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/config/checkstyle.xml b/config/checkstyle.xml deleted file mode 100644 index d408131..0000000 --- a/config/checkstyle.xml +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..5ad6974 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +org.gradle.configuration-cache=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..ff91d9e --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,18 @@ +[versions] +assertj = "3.27.6" +junit = "6.1.0-M1" +lombok = "1.18.42" +slf4j = "2.0.17" +spotless = "8.1.0" + +[libraries] +assertj = { module = "org.assertj:assertj-core", version.ref = "assertj" } +junit-launcher = { module = "org.junit.platform:junit-platform-launcher", version.ref = "junit" } +jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" } +jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" } +jupiter-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junit" } +lombok = { module = "org.projectlombok:lombok", version.ref = "lombok" } +slf4j = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" } + +[plugins] +spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f8e1ee3125fe0768e9a76ee977ac089eb657005e GIT binary patch literal 45633 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�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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..23449a2 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..adff685 --- /dev/null +++ b/gradlew @@ -0,0 +1,248 @@ +#!/bin/sh + +# +# Copyright © 2015 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..c4bdd3a --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,93 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/mvnw b/mvnw deleted file mode 100644 index 66df285..0000000 --- a/mvnw +++ /dev/null @@ -1,308 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.2.0 -# -# Required ENV vars: -# ------------------ -# JAVA_HOME - location of a JDK home dir -# -# Optional ENV vars -# ----------------- -# MAVEN_OPTS - parameters passed to the Java VM when running Maven -# e.g. to debug Maven itself, use -# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -# MAVEN_SKIP_RC - flag to disable loading of mavenrc files -# ---------------------------------------------------------------------------- - -if [ -z "$MAVEN_SKIP_RC" ] ; then - - if [ -f /usr/local/etc/mavenrc ] ; then - . /usr/local/etc/mavenrc - fi - - if [ -f /etc/mavenrc ] ; then - . /etc/mavenrc - fi - - if [ -f "$HOME/.mavenrc" ] ; then - . "$HOME/.mavenrc" - fi - -fi - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -mingw=false -case "$(uname)" in - CYGWIN*) cygwin=true ;; - MINGW*) mingw=true;; - Darwin*) darwin=true - # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home - # See https://developer.apple.com/library/mac/qa/qa1170/_index.html - if [ -z "$JAVA_HOME" ]; then - if [ -x "/usr/libexec/java_home" ]; then - JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME - else - JAVA_HOME="/Library/Java/Home"; export JAVA_HOME - fi - fi - ;; -esac - -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=$(java-config --jre-home) - fi -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$JAVA_HOME" ] && - JAVA_HOME=$(cygpath --unix "$JAVA_HOME") - [ -n "$CLASSPATH" ] && - CLASSPATH=$(cygpath --path --unix "$CLASSPATH") -fi - -# For Mingw, ensure paths are in UNIX format before anything is touched -if $mingw ; then - [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && - JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" -fi - -if [ -z "$JAVA_HOME" ]; then - javaExecutable="$(which javac)" - if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then - # readlink(1) is not available as standard on Solaris 10. - readLink=$(which readlink) - if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then - if $darwin ; then - javaHome="$(dirname "\"$javaExecutable\"")" - javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" - else - javaExecutable="$(readlink -f "\"$javaExecutable\"")" - fi - javaHome="$(dirname "\"$javaExecutable\"")" - javaHome=$(expr "$javaHome" : '\(.*\)/bin') - JAVA_HOME="$javaHome" - export JAVA_HOME - fi - fi -fi - -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - else - JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." >&2 - echo " We cannot execute $JAVACMD" >&2 - exit 1 -fi - -if [ -z "$JAVA_HOME" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." -fi - -# traverses directory structure from process work directory to filesystem root -# first directory with .mvn subdirectory is considered project base directory -find_maven_basedir() { - if [ -z "$1" ] - then - echo "Path not specified to find_maven_basedir" - return 1 - fi - - basedir="$1" - wdir="$1" - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then - basedir=$wdir - break - fi - # workaround for JBEAP-8937 (on Solaris 10/Sparc) - if [ -d "${wdir}" ]; then - wdir=$(cd "$wdir/.." || exit 1; pwd) - fi - # end of workaround - done - printf '%s' "$(cd "$basedir" || exit 1; pwd)" -} - -# concatenates all lines of a file -concat_lines() { - if [ -f "$1" ]; then - # Remove \r in case we run on Windows within Git Bash - # and check out the repository with auto CRLF management - # enabled. Otherwise, we may read lines that are delimited with - # \r\n and produce $'-Xarg\r' rather than -Xarg due to word - # splitting rules. - tr -s '\r\n' ' ' < "$1" - fi -} - -log() { - if [ "$MVNW_VERBOSE" = true ]; then - printf '%s\n' "$1" - fi -} - -BASE_DIR=$(find_maven_basedir "$(dirname "$0")") -if [ -z "$BASE_DIR" ]; then - exit 1; -fi - -MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR -log "$MAVEN_PROJECTBASEDIR" - -########################################################################################## -# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -# This allows using the maven wrapper in projects that prohibit checking in binary data. -########################################################################################## -wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" -if [ -r "$wrapperJarPath" ]; then - log "Found $wrapperJarPath" -else - log "Couldn't find $wrapperJarPath, downloading it ..." - - if [ -n "$MVNW_REPOURL" ]; then - wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" - else - wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" - fi - while IFS="=" read -r key value; do - # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) - safeValue=$(echo "$value" | tr -d '\r') - case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; - esac - done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" - log "Downloading from: $wrapperUrl" - - if $cygwin; then - wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") - fi - - if command -v wget > /dev/null; then - log "Found wget ... using wget" - [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" - if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" - else - wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" - fi - elif command -v curl > /dev/null; then - log "Found curl ... using curl" - [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" - if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" - else - curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" - fi - else - log "Falling back to using Java to download" - javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" - javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" - # For Cygwin, switch paths to Windows format before running javac - if $cygwin; then - javaSource=$(cygpath --path --windows "$javaSource") - javaClass=$(cygpath --path --windows "$javaClass") - fi - if [ -e "$javaSource" ]; then - if [ ! -e "$javaClass" ]; then - log " - Compiling MavenWrapperDownloader.java ..." - ("$JAVA_HOME/bin/javac" "$javaSource") - fi - if [ -e "$javaClass" ]; then - log " - Running MavenWrapperDownloader.java ..." - ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" - fi - fi - fi -fi -########################################################################################## -# End of extension -########################################################################################## - -# If specified, validate the SHA-256 sum of the Maven wrapper jar file -wrapperSha256Sum="" -while IFS="=" read -r key value; do - case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; - esac -done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" -if [ -n "$wrapperSha256Sum" ]; then - wrapperSha256Result=false - if command -v sha256sum > /dev/null; then - if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then - wrapperSha256Result=true - fi - elif command -v shasum > /dev/null; then - if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then - wrapperSha256Result=true - fi - else - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." - echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." - exit 1 - fi - if [ $wrapperSha256Result = false ]; then - echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 - echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 - echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 - exit 1 - fi -fi - -MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$JAVA_HOME" ] && - JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") - [ -n "$CLASSPATH" ] && - CLASSPATH=$(cygpath --path --windows "$CLASSPATH") - [ -n "$MAVEN_PROJECTBASEDIR" ] && - MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") -fi - -# Provide a "standardized" way to retrieve the CLI args that will -# work with both Windows and non-Windows executions. -MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" -export MAVEN_CMD_LINE_ARGS - -WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -# shellcheck disable=SC2086 # safe args -exec "$JAVACMD" \ - $MAVEN_OPTS \ - $MAVEN_DEBUG_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd deleted file mode 100644 index 95ba6f5..0000000 --- a/mvnw.cmd +++ /dev/null @@ -1,205 +0,0 @@ -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM https://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.2.0 -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir -@REM -@REM Optional ENV vars -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files -@REM ---------------------------------------------------------------------------- - -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM set title of command window -title %0 -@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* -if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -@REM ==== END VALIDATION ==== - -:init - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" -set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" - -FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( - IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B -) - -@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -@REM This allows using the maven wrapper in projects that prohibit checking in binary data. -if exist %WRAPPER_JAR% ( - if "%MVNW_VERBOSE%" == "true" ( - echo Found %WRAPPER_JAR% - ) -) else ( - if not "%MVNW_REPOURL%" == "" ( - SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" - ) - if "%MVNW_VERBOSE%" == "true" ( - echo Couldn't find %WRAPPER_JAR%, downloading it ... - echo Downloading from: %WRAPPER_URL% - ) - - powershell -Command "&{"^ - "$webclient = new-object System.Net.WebClient;"^ - "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ - "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ - "}"^ - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ - "}" - if "%MVNW_VERBOSE%" == "true" ( - echo Finished downloading %WRAPPER_JAR% - ) -) -@REM End of extension - -@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file -SET WRAPPER_SHA_256_SUM="" -FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( - IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B -) -IF NOT %WRAPPER_SHA_256_SUM%=="" ( - powershell -Command "&{"^ - "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ - "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ - " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ - " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ - " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ - " exit 1;"^ - "}"^ - "}" - if ERRORLEVEL 1 goto error -) - -@REM Provide a "standardized" way to retrieve the CLI args that will -@REM work with both Windows and non-Windows executions. -set MAVEN_CMD_LINE_ARGS=%* - -%MAVEN_JAVA_EXE% ^ - %JVM_CONFIG_MAVEN_PROPS% ^ - %MAVEN_OPTS% ^ - %MAVEN_DEBUG_OPTS% ^ - -classpath %WRAPPER_JAR% ^ - "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ - %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" -if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%"=="on" pause - -if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% - -cmd /C exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 32f88f5..0000000 --- a/pom.xml +++ /dev/null @@ -1,389 +0,0 @@ - - - 4.0.0 - - me.atour - baseline-java - 1.0.0-SNAPSHOT - - jar - - Java Baseline - Baseline project for Java 25 LTS with Maven - - - - MIT License - - - - - 25 - ${maven.compiler.source} - UTF-8 - - 3.27.6 - 3.6.0 - 3.5.4 - 0.8.14 - 6.1.0-M1 - 1.18.42 - 3.28.0 - 2.0.17 - 3.1.0 - 3.5.4 - 3.14.1 - - - - - - org.slf4j - slf4j-api - ${slf4j.version} - - - - - org.assertj - assertj-core - ${assertj.version} - test - - - - org.junit.jupiter - junit-jupiter-api - ${junit.version} - test - - - - org.junit.jupiter - junit-jupiter-engine - ${junit.version} - test - - - - org.junit.jupiter - junit-jupiter-params - ${junit.version} - test - - - - - org.projectlombok - lombok - ${lombok.version} - provided - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler.version} - - ${maven.compiler.source} - ${maven.compiler.source} - full - - - org.projectlombok - lombok - ${lombok.version} - - - - - - - com.diffplug.spotless - spotless-maven-plugin - ${spotless.version} - - - - - - Dockerfile - - - true - 8 - - - - - - - *.md - *.yml - *.config - *.properties - .gitignore - - - true - 2 - - - - - - - **/generated-sources/** - - - - - - - - - - star imports - import\s+[^\*\s]+\*;(\r\n|\r|\n) - $1 - - - true - 4 - - - true - 2 - - - - - - spotless-verify - - check - - - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - ${checkstyle.version} - - config/checkstyle.xml - false - true - config/checkstyle-suppressions.xml - - - - checkstyle-verify - - check - - - - - - - org.apache.maven.plugins - maven-failsafe-plugin - ${failsafe.version} - - ${failsafeArgLine} - - **/*IntegrationTest.java - - 3 - - - - - integration-test - verify - - - - - - - org.apache.maven.plugins - maven-pmd-plugin - ${pmd.version} - - - **/generated-sources/** - - utf-8 - 100 - - - - pmd-check - - check - cpd-check - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${surefire.version} - - ${surefireArgLine} - - **/*IntegrationTest.java - - - **/*Test.java - - 3 - - - - - org.jacoco - jacoco-maven-plugin - ${jacoco.version} - - - - ${project.build.directory} - - *.exec - - - - - - BUNDLE - - - BRANCH - COVEREDRATIO - 0.80 - - - LINE - COVEREDRATIO - 0.80 - - - - - - - - jacoco-prepare-agent - - prepare-agent - - - surefireArgLine - - - - jacoco-prepare-agent-integration - - prepare-agent-integration - - - failsafeArgLine - - - - jacoco-merge - post-integration-test - - merge - - - - jacoco-check - - check - - - - - - - - - - no-checks - - - - - com.diffplug.spotless - spotless-maven-plugin - - - spotless-verify - none - - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - - - checkstyle-verify - none - - - - - - org.apache.maven.plugins - maven-pmd-plugin - - - pmd-check - none - - - - - - org.jacoco - jacoco-maven-plugin - - - jacoco-prepare-agent - none - - - jacoco-prepare-agent-integration - none - - - jacoco-merge - none - - - jacoco-check - none - - - - - - - - - \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..7ab30b0 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "baseline-java"