不知道你有沒有發現,maven的clean過程有點慢,當有多個模塊須要以此打包的時候,這個clean時間就不容小覷。而後就有人把clean幹掉了,用了一段時間沒啥問題,而後你們以爲這個版本問題了,就把之前的不少包上載到這個版本上來,一堆問題,都是由於沒有刪除target形成的,後面試着用java遍歷文件夾的方式去刪除,仍是很慢。因而想到調用操做系統的刪除文件夾的命令進行操做。方案以下:
java
private void commandDelFolder(String folderPath, Writer writer) { String[] cmds = new String[3]; boolean isWindows = PropertyHolder.get().isWindows(); if (isWindows) { cmds[0] = "cmd.exe"; cmds[1] = "/c"; cmds[2] = " rd /s /q " + folderPath; } else { cmds[0] = "/bin/sh"; cmds[1] = "-c"; cmds[1] = " rm -rf " + folderPath; } try { Process process = Runtime.getRuntime().exec(cmds); exeProcess(process, writer); } catch (IOException e) { logger.error(e.getMessage(), e); throw new GenerateException(e); } }
用了下,刪除速度很是快,上百兆的文件夾,也就幾秒鐘就刪除完了。用了好久沒啥問題,可是測試那邊不少時候用的是服務起環境,服務起環境和bat起環境,其配置文件不同,查別的問題發現日誌裏面有「文件名目錄名或卷標語法不正確」的提示,想着這種問題挺嚴重的,趕忙查這個問題,先加debug端口,試了幾種方法都沒有成功,沒辦法,只能經過log.info的方式打印下cmds ,後面發現路徑確實有問題,服務起的時候,多拼了一些東西,而後就修改了服務起環境的配置文件。想一想我可能走的是一條不尋常的路,否則別人若是用我這種方式取路徑不該該早就報錯了嘛。面試