From f09ba50c4c87cf6dc1f0dd298ffdd9bdc6b4139b Mon Sep 17 00:00:00 2001 From: libingwen Date: Thu, 6 Dec 2018 17:16:53 +0800 Subject: [PATCH 1/3] =?UTF-8?q?1=E3=80=81=E6=8A=8Ajar=E5=8C=85=E6=94=BE?= =?UTF-8?q?=E5=88=B0IDEA\plugins=E6=96=87=E4=BB=B6=E5=A4=B9=E4=B8=8B?= =?UTF-8?q?=EF=BC=8C=E9=87=8D=E5=90=AFidea=E5=8D=B3=E5=8F=AF=202=E3=80=81?= =?UTF-8?q?=E5=8F=B3=E9=94=AE=E7=82=B9=E5=87=BB=E8=A6=81=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E7=9A=84=E6=96=87=E4=BB=B6=E5=A4=B9=E6=88=96=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E7=82=B9=E5=87=BBcreate=20pachter=E9=80=89=E9=A1=B9?= =?UTF-8?q?=EF=BC=88=E4=B8=80=E8=88=AC=E5=9C=A8=E7=AC=AC=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=EF=BC=89=E5=8D=B3=E5=8F=AF=203=E3=80=81web=20apth=EF=BC=9A?= =?UTF-8?q?=E4=B8=80=E8=88=AC=E4=B8=8D=E9=9C=80=E8=A6=81=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E9=BB=98=E8=AE=A4WebRoot=E3=80=82=204=E3=80=81save=20path?= =?UTF-8?q?=EF=BC=9A=E8=87=AA=E5=AE=9A=E4=B9=89=E5=A4=96=E9=83=A8=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E8=B7=AF=E5=BE=84=20=E5=AF=BC=E5=87=BA=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=EF=BC=9A=201=E3=80=81src=E7=9A=84=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=88=96=E6=96=87=E4=BB=B6=E5=A4=B9=E5=AF=BC=E5=87=BA=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E7=9B=B4=E6=8E=A5=E5=AF=BC=E5=87=BA=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E7=9A=84=E7=BC=96=E8=AF=91=E5=A5=BD=E7=9A=84classes=E4=B8=8B?= =?UTF-8?q?=E7=9A=84=E7=B1=BB=202=E3=80=81=E5=85=B6=E4=BB=96=E7=9A=84?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=88=96=E6=96=87=E4=BB=B6=E5=A4=B9=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=97=B6=E4=B8=8E=E5=9C=A8=E9=A1=B9=E7=9B=AE=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E7=9B=AE=E5=BD=95=E4=B8=80=E8=87=B4=203=E3=80=81WEB-I?= =?UTF-8?q?NFO/classes=E4=B8=8B=E7=9A=84=E6=96=87=E4=BB=B6=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=8A=A5=E9=94=99=E6=97=B6=EF=BC=8C=E5=9C=A8moudle?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E8=AE=BE=E7=BD=AE=E9=87=8C=E6=8A=8Aclasses?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=E7=9A=84Excluded=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=8E=BB=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/PatcherDialog.form | 2 +- src/PatcherDialog.java | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/PatcherDialog.form b/src/PatcherDialog.form index 3f6afa9..b8e384a 100644 --- a/src/PatcherDialog.form +++ b/src/PatcherDialog.form @@ -118,7 +118,7 @@ - + diff --git a/src/PatcherDialog.java b/src/PatcherDialog.java index 203d052..2816ba0 100644 --- a/src/PatcherDialog.java +++ b/src/PatcherDialog.java @@ -97,25 +97,34 @@ private void onOK() { String compilerOutputUrl = instance.getCompilerOutputPath().getPath(); // JavaWeb项目的WebRoot目录 String webPath = "/" + webTextField.getText() + "/"; + //项目模块的路径E:\git\moudlea\ + String modulePath = module.getModuleFilePath().split(".idea/")[0]; // 导出目录 String exportPath = textField.getText() + webPath; for (int i = 0; i < model.getSize(); i++) { VirtualFile element = model.getElementAt(i); String elementName = element.getName(); String elementPath = element.getPath(); - if (elementName.endsWith(".java")) { + if(elementPath.contains("/src/")){ + + //获取到src下的文件名或者目录名,如果是java文件则文件名由.java替换为.class并到编译路径下取,如果是文件夹则直接去编译路径下的文件夹 String className = File.separator + elementPath.split("/src/")[1].replace(".java", ".class"); File from = new File(compilerOutputUrl + className); File to = new File(exportPath + "WEB-INF" + File.separator + "classes" + className); - FileUtil.copy(from, to); - } else { + FileUtil.copyFileOrDir(from, to); + }else { File from = new File(elementPath); - File to = new File(exportPath + elementPath.split(webPath)[1]); - FileUtil.copy(from, to); + File to = null; + if(elementPath.contains(webPath)){ + to = new File(exportPath + elementPath.split(webPath)[1]); + }else{ + to = new File(textField.getText()+ File.separator+ elementPath.substring(modulePath.length())); + } + FileUtil.copyFileOrDir(from, to); } } } catch (Exception e) { - Messages.showErrorDialog(this, "Create Patcher Error!", "Error"); + Messages.showErrorDialog(this, "Create Patcher Error!"+e.getMessage(), "Error"); e.printStackTrace(); } From d7d72a91714652665baec528f97bcd2cf676183f Mon Sep 17 00:00:00 2001 From: libingwen Date: Thu, 6 Dec 2018 17:17:14 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=AF=B4=E6=98=8E=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 9c2beee..f62f3b9 100644 --- a/README.md +++ b/README.md @@ -6,5 +6,9 @@ idea导出增量补丁插件 把`patcher.jar`下载到`.IntelliJIDEAx0\config\plugins`目录,重启`Idea`,右击即可看到。 [原文](http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/deploying_plugin.html) +1、src的文件或文件夹导出时,直接导出对应的编译好的classes下的类 +2、其他的文件或文件夹导出时与在项目中的目录一致 +3、WEB-INFO/classes下的文件导出报错时,在moudle属性设置里把classes文件夹的Excluded属性去掉 + 操作如下: ![](patcher.gif) From 2d980e8e482a99123d61c24613342b9f15d5e714 Mon Sep 17 00:00:00 2001 From: libingwen Date: Thu, 6 Dec 2018 17:17:59 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=BF=87=E7=A8=8B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patcher.jar | Bin 38333 -> 38542 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/patcher.jar b/patcher.jar index 28d116ac4229f35f17133a72c76d57d36aa05cc2..7fb7e2ad3419ad90a8954b55688e3fc60c7e5f05 100644 GIT binary patch delta 7462 zcmZu$1yEdD5``gzV8I;%VQ_bMC&7ZdySu|cfI$ZW6C5VN-Ccu);4Wd%Ai>=NB(Ra) z+W-IVdsVNy@2l$b?mcz-Rdsii0pcqF#A+{*9^oS(AUr`34hJh!T}@HcAR-`i1EA)v zG$7bBQ7qPPl~l!A4$AGMH(*ZOzP?ROT#VJG#hT@>tuK!VwslyfqRw`EC3&{13<3F4D{ z6G)DG-Wx61gYr)5&%=sIl;#dA546GS|-_D+pknqBZET?7&H56z8U zj5@HgRm zqXkn+=1IKp&I8Y8T<@~J;Jt&HHU5ytTE}ic55)b>-f~pd<>r#b|Mdx+V#&%A0(|B{ ziS;e+n~|6la1Ghui!jpPdGs&{y#2!?0s;X7bo?z5C`f(T9#0bgzEE%3df8t8p`k$w z*!RS_Z%H9W*B;qyR;u6{I>?z`ozB=c9g{%I5JMy;L0Nh+lCOsQg6QfyXjRa|I$rhu z2g(WQ_+HcrM>jz^U2{SMae{gIr_b2UdvdMz-jAF&+onozl8+l$4yr$uC_B{$Fjr4y z42!N3fub4@LqwFwZUY5&HEy)7(BsQDwFk{jQs8$s-2+WHAriNf#7s@-dRl#nTY7ue zO`o#V1)WCOl2;uCb3(iPnJI^X>4V2?c|b0zAbo0A!-|jdfbkZi1pD` zo%?MK<=d-uSjieP=Nr+x#yPk!^i$Ct3c_&OXm4*+f(!BGDVBv`+%`w|8(ydMlv0e| z(IDsCMg>0Fgv(u~+Bred$mkq^AplmS{5ay8j#P5AkN@(@n}X3$Gxae@*;_R z!HWLcU_^}Wcy(&KJ`rVPtKjw`Hdg3~nrdmv5wCgn3$Gy#J!jY{`m-|_>cK5|C%d$2K{d`UwLBR!wGp;4*3f7j^uWUU8e$X(fiAWxh5_Y6(tub>$vg;4+s+ z2HMwyQmYd8V)!?{O&{-j2prP~;|PVV5=viw@btep z|M981mpf+Z9OLiYtw24L|6N#h-6=rJD!-%%u4FSJV*OS{Rm@v*X;bDN`K!KKYT;sB zPw&=bTMJ8jqr@dxQxY4J~J)d5|Bt4S)D#ozO-%Sb9tDd0C7Am$>3`U|auhDH0}&I|=5(y4;y5 zhl0`vP1y2+xY!J^Xfyvv(f5}W7rm=AFZ3cA>EWGMKc#5*ONzH9gP4x&|B>RHfvN@% z=%*BC{z$R#UC{BFTV`=Hv%wP5OTj>qpIVq;Nkoaqo`+Wrge@KPaRS=Echi@p8_X+9ZIdoQo3@J_{ zf25dZ^HYkW+#qnmPboUyvG*a`Z-1ldGjU(l3EdcLb{@egH)tN+A+-_t%63!}|FgbI z{H(75UxbnWPN&LLN&CoC1cXFN1O&XFe@`_tPYYWscNse~M;9A53r8~#k8C{@iE~Zt z&OG4rM>4Ln(J}fl`qv0V)b<22A3+hqZ=cLg&F~aAU#|olci6mgJMQ@9Rjkr7veq-f zA0EzE+I;Som)kZ$n+XQTRJm3+J@)XpvFQ^5lV?P>^@1(cv6`*ARH*~&>gh&w3By}% z5nYutJ4~(mISxFfc@Dg-@s&g;m}twzuaKy8m-5w&^AZijrcKjggo;fer2fpR1eW0mJbtq0YezmLhE3hvtC z?2P1b@kQl}(jPM7!y81C+d2`!8aqC8=2Lj-adtk15W}$%&RLp@I1B46Oi0`y zkHK|(KU=@^=~89Mh+3d1V&P)?Oz5jmHC!G0+@oRy7Ro+I46Tt>x>dOr;o>+ zO8Ty3VM}3>qxxq=t;44!^$UWIdV(Ix^hjKKZR*`_Iv%D_>eM$a=rfl3t-^MYJ`FXY zY?VXerdsR%fx>mUDMh{X&YCQX_&#ASilf?>3h;=ElO2^Ui4P~5x09OW`{l`q)=#ex z6d8KT^0^pocni03K@WPy!`4dODh}B9Sp~w$oczQTBpipzaiKg^n9JHz3NF^48TIbE z-g9RSp|zXfva5=gBJuijHEbe80hgS9HRTC=byM z%QKhuu&P|~ZvR9<^Hx1Q3n&Sg*DkDPMW>&PmJTIsl>gj7X3mr94s@E!|1c}OXDOep ze8>|gUGD2|2a^Dq9i=oJyza*q42WKA^?sS5_i2L!kleSFr6Hwdj(E0=pJuVw0Xe1%;&UK9a_cQ7@PH^mHfl&Zk_PNeZIcDWv0 z-frK+z!n^=jk6;%!1s?w^R39@t+-h=QwTG4wf(!Q=b6?*B)F3lxlfOJxH3LeVd}r*wWn8}B+IIkIu&??gb76ol-Ko?su)c3q3P_GyJ1eb#*}|8h&bOx+ZUR5 z&sJHS;X)%^RybJwO}JInNSFRgpt39A+k;^mB%xn7u!5 z7omIs+6CK952Pyx4SdX>p0PPtClzd`l4>4qWHtD5<7FI@=?M=tJ$c=Zy{@<&(UNX= zRMKbU?93AlBGUB5$tK$Rh#$YV)Wg}=`@x1Apt-GWY`9J9tC+nZf`x1Aucz<9ll+Xw zDc{6!yMTC1X?@0*1SY?26+zu@X+ObJ-9pX|syat&r+zW0w63$A94>-CzM!a9HR2@H z1jURZqv-iukt$TxQ`Qq&z>7maq%}}6+BRoMUDFLuqwTm;`!efkoIO9$5|-&@3>8i% zWquoXhV9Yu;r*CHw3$(qjIqJ9{S$K~^!t4X5UnD1sxg#y`;`E-2Q~(tVZn*NP}TS{ zNa*_Hu@L5jHUp`K`N!$nGWAhpQ}H;<8z?6cIUWk`-B<+fssu{7M+k@2u z#e(P1w*xJSLBA#v#}7il=gQK*_THx(6pOB09Q&Q2rsq&;U4zrm+k+s&r*LxP!diI| zn}w4D5hL~TYstv_hJEpxE6$kmqJ_3j!N&;(!rjIc&zSYb@RVr^g(|8URU8PCv4dag5)EB7h;PLs$4Q&_7>K=E+g9hGQ zrLd-FFd^6F>tP*HSPZ-!W8!x_WMULbXFsIvS2E5$+&W`MX%MpXFVVypIxFn1t6*Oya5HR9bnJuf#7JjLB>3AuIa~5Qto8TfaomY8@S0sy4R~q_EY0R z+Bw8yXwI;Vo|O% zz5}t%_~<;>^L!y2Ys?SJ8jjqVe4BA|w+0y>!gNNaWSQu5pf8BnmX$d_fjW}wYb|OI zWSOKAk#jXxwF}Fa4AF~5N8WI=+$KETH1tDmdRvy$%^C~`?$?C~Is0@(ACi_~6uRp% z(_?N~M??4*>hl8H8t|5l7QGzX-Q>k%G(F3>OxlEY1j&aK=19(&w5C5?4!t?_+M#_z zP-G;0lxaPz1V188(8&>#2N^JZD46Ht=a(LzJSapR@jNPE>BKn!L-~Cs86x=Sc4b^Z zcsE?`&!>~7dGv-y3czY}8)|)VRTf2$+aR0{GrOEzCu~Baqh?!{n97z^q(3yov&fa# z=4;b=cn$2@X(E<`=rmyz4qy={+K`>ZDlb@eJRa*G^Z?RhyJg zbq&#{M5qbZdW^nNvhEC%D!Qp^Z)ERE1!6&^%lC{-tWfURAaCLkIk|WFCD4vva}W77 zRgSf}CHJ?T5#x>qfZ8pNxg!%VNnQLI|aHT_IQ-!1rG>8XFwOG;fM`F_oG) zO$!Oc9p;gQjn2Dv7e7lTmNiJoCS} zGdxnw-g}+}u4cd3c5Z?p-Em{*Wo9BF+u3yY>b@W=Jrg{Mih?2O?OxW&5&^<{GhmY+ zv2&1j72xD1DrF@vRt!1IlA5%9mgdN|L_bqtf<)IgXhoab@rD_y!h293z>E>9p~B`@ z&yY*dHactEKxqB?F1c#u&&kQQA!qr0=KM(+MSHp&s`@Odyt?~-rO9Tm_iiP*Uc&Zj zvbO< zh&XxX(|RC7?;|y@@e*e4^U7g-oqu|rj3tr&yHPExfaK}Dn|`U;t_UkqyOmMraPzPT z>pY?UcMzfevzj(3m^KE>G~v}GJ+Ceu?iput7uw!IDgF0ASe2LeC82&v%u#OgVkvOe z&)#90L&8!yzc5EswJb|6;C899NUOUKsfyUJ(5wMGdtMJ7Cn}nsJO;|Weq9tGyisp$ z;Ivyv9pkh9<VCcLMtGB~I7!{PV}! zTk-G1?XbaPW7| zm9(o~7MVzQ`ojdhG`2McijedkRq9f#{4j}F-OIY1WXi&@U2I)925liZEcdi`l%Ieo zPv%CH$$-FHTQfL@UyWcn{IzyYus#8=1t@4H7IUzR2{lOBl{6RKbiu0_)rU&@2&L%L zS|-uJYn$4W!LbwY=<-|XmtVRl^G^EML}c2|Cab?Zg@+x>2L->q3NyI|uiTv!)w6>X zQO=qs9$alNcxFc`?&WYI;=keLmJ+}*G$Ql~g!FSP=pK5~K@$aN6$h-KqFMaCC!inE z56UHX21$yJ@7LKU-{He>gsyLPazL6ps#y}rO{(vWulel(j3M;+FVI+H6FI>&{V~Z( z*C8tlE!%l54Tl_AKfa`83kV@TDK`BMf* zXXf#w)m+^1ob=z$Z=RlP%}(Ze;)1eSIA05hMyMdC>~Qc$oQj~`$y)?tm~ZNulA{3Q zt8{jGgqG(S#q4GTkcS{b7E{I5=;_FPHrh0m86>BAo>!jcjF0BWLYiX&&@0RRv#bmB zI94Dp9j8$Xw~KGID{E;{af~f)`=L;_*nr%+(ZP?{ zLss##v>l&bqabygQjtGh4?7b$erx0K+UIdeNB8>60dI-MuuIxIvHeC<8r@L837bv< z?+B3{cdS%36O=te0|r9WWf^~(nSngN6;a%{@R;?UP_FN;EV!M~){t;AKUFMok--m9 zCNnD047o-Eh6|ntty4qwZFr!WfQFKqD1SUR8O%+;hbYpK^XE9Uxvlp-RmPZe(qA7@ z&WST;8}g3Ht4ucv5tejDe}!oBpG{5>*3Ysz*|s(YvYaIJ&KB{Wq56s8q-FRpQPW~G zLk=PXKcu)#0fjupJ_f;_O_JRxC6pbhqt5S9&r|C;=kYzdVUia`i`hBWiukC-IaTT{MwK0(jxA; z@K@k5f2#P{Q3B?@?lvaqA6=@io~%zzkq{6_A48dZDM0(`(-Qdi+7=oXGy3elA94xn z`_WejJ`&b{2I$M2cIKmF7A~mN5(E*f_K>i~j|tpg<&cllQK<>XXYVd7*KG%`wm1df z-`-MmA-AtYv5Xmfjz_n{&~1)-NynDiZ2mj~UEff7Bg44L;ByF>{?d&3M33ImRNEpU z*!7bXqAUonmrhP;$x5N5mFN;?^;sXbHdGN?z2jywW>i#0X1rD+33ja9sC0?xW*Eqr za5kpu*N2ecsGO0!<5{TnY!Uw`t@jaEJ}UJRO=CL)Llo(xbz<*;W4OIvOV^Jw(OmkYGn(a{%&JRk z30kEBa27K##%&FU+yq>MNN{{*i(AXn85VZBiy_&c3w*9g`1V4^XRN|phxwR@Ej}-k z%z<7Eh-ND;+xZ16hx7GwcE9nCq4v+SobE>wnZeg0gZf%ppd~nobk{?Qe6818AVj{l z>je;e5u@bc{YEV=d9pJvTQ-Wjl@1>{yIRk6ho3y3 zY*!`>sw90WD#@Fb^S@`H;CX@AOo?U9peH^XB19 zmx)WTFxgPWNxqW#V$3;8!}1wwfq@=DXH;ETpUdz-^2K3FF&j}oW8s$6Ww}2l@`CLU zRi$k7*Z8)|sN9uvn_b!KAD52vV;A|p^5s2MyY%u6FFwn%ro%_v(O{nS;JAa?ZBU<$ zEnQOZOH}Go?t{H}Rn-LC8F_NKluom^oVs**^4Xov`#Y;)%lXUFZHPh+kXg_kx9$V= zTu_|TRgzL@Vml;==Fr#0O#JEO(36`1+#W3A&k_!tZTIMLL;Q|u_u!ce>XB)u{5mql zdNWq@Y26ju-myA9J`*l)Qp)PQ2TQ!qM2>?^H4P9YvPGWj+q63>r6lB-90jFbfl!=H zH==E~g!();B_vcAT#a_&7z@))?kHpOPeNxRaxi*SZdJkU3Hh2U`i1XO-F=LBMd_Uo z4>6=j?Xb?Z?I;tQ;o{)aWBzJQ*E-u6DkP9N!v7oP{2Bq!{A^PFx~P6X|Ix6b;r!FG zLi_h?LCms2p zI9&gWBg6g&hv~^5iw6JSLjwJptNp!S_*XK5Q2v4QzbH6kt-lXVQqbkM)d@lUzlZkU z%KO*NJpM(wKOvOOmx$)CR1k_f{m%9u+mZhGcUEXPgb9F23ay670HR5uR}fji?Q^JT zJO_ZB8tM`+2#}|Sn!O^0_Qf*+f_}M_P^<(dK=U70KS2zz%KUp36BiFU^7BnO|L+h^ zK>%fW!vvs^{T;q!CW6NQ3>R#EhYN4S0O}4uT@I*XA`>9q<@aj476$bF&rrbacetOZ z1i<(Dw~G$7Na6s5`27wmP0*m7NlXCTQ0Q|TPUztq3@APH86YYgDi4(f&_+Vzp}YX4 wNa#oCbEtRnGe(^l1O!bhUr#9)Un`G4C$9Dq`SCAtko~;xo**CuL4HO50-lty-v9sr delta 7115 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