1.為什么使用exec纸泄?
現(xiàn)在的工程往往依賴眾多的jar包,不像war包工程,對于那些打包成jar包形式的本地java應用來說伤溉,通過java命令啟動將會是一件極為繁瑣的事情,原因很簡單妻率,太多的依賴讓參數(shù)-classpath變得異常的恐怖乱顾。為此,在發(fā)布應用時宫静,一般使用兩種方法來啟動應用程序:一種是通過工具將工程及其所有依賴的jar包打包成一個獨立的jar包(在maven里有兩個插件assemly和shade是用來完成這種工作的);另一種方法是編寫一個run.bat文件糯耍,文件包含一個啟動應用的java命令扔字,很顯然,這個命令的classpath必須包含全部依賴的jar包温技。但是對于尚處在開發(fā)階段的應用來說革为,第一種方法需要將所有jar包解壓再重新打包,因此非常耗時舵鳞,特別是工程非常大的時候震檩。第二種方法的問題在于抠璃,對處在開發(fā)階段的工程赢乓,經(jīng)常需要引入或升級jar包,這就需要頻繁地修改run.bat文件殃恒。實際上套才,對于使用maven管理的工程迂猴,完全可以通過maven來獲取工程的classpath,簡化應用程序的啟動命令,這正是maven插件exec被設(shè)計出來的主要動機背伴。使用exec比使用java命令去啟動應用程序最大的優(yōu)勢就在于:你不需要再去為-classpath而傷腦筋了沸毁。