閑聊
最近在將原有單一應(yīng)用架構(gòu)的項(xiàng)目升級(jí)為分布式項(xiàng)目結(jié)構(gòu)展东,按照不同的功能,劃分成不同的獨(dú)立運(yùn)行服務(wù),每個(gè)服務(wù)都以jar運(yùn)行莱坎。
問(wèn)題
發(fā)現(xiàn)用java -jar來(lái)運(yùn)行 服務(wù)的時(shí)候,提示ClassNotFound寸士,找了一下META-INF/MANIFEST.MF文件檐什,發(fā)現(xiàn)classpath 沒(méi)有項(xiàng)目所依賴(lài)的jar包。
maven里有兩個(gè)插件影響MF文件的生成: maven-jar-plugin 跟 maven-dependency-plugin
maven-jar-plugin:用于生成jar包弱卡,包括MF文件的描述信息等配置,其中包括了classpath的配置,這里會(huì)掃描指定依賴(lài)的包來(lái)進(jìn)行配置
maven-dependency-plugin:用于將依賴(lài)的jar包復(fù)制到指定的目錄下
原因
由于插件順序?yàn)?: 1.maven-jar-plugin => 2.maven-dependency-plugin
導(dǎo)致了在生成MF文件之前還沒(méi)有將依賴(lài)的jar包匯合好乃正,就已經(jīng)開(kāi)始寫(xiě)入MF文件的classpath屬性。
解決
1.將兩個(gè)插件順序互換 maven-dependency-plugin => maven-jar-plugin
2.將插件順序生效, 調(diào)用mvn clean 清空依賴(lài)包的集合目錄
如果不執(zhí)行mvn clean 婶博,maven-jar-plugin 插件會(huì)將舊的jar包掃描到MF文件classpath中
參考信息:
mvn clean 與mvn clean install區(qū)別
http://blog.csdn.net/abc86319253/article/details/44019881