如果每次打war包都要把所有依賴jar放在WEB-INF/lib下,是很傻的做法,war包很大,也浪費內存。參考之前jboss上部署公共jar的經驗,tomcat實現起來想來也不困難。
1. 參照maven插件--assembly把依賴jar單獨打war包
2. 在tomcat下建立shared/lib目錄,把依賴包放在此目錄
3. tomcat conf目錄下找到catalina.properties,寫入shared.loader=${catalina.base}/shared/lib,${catalina.base}/shared/lib/*.jar
經過以上步驟,已經ok了
assembly打包的時候只關注
<scope>provided</scope>的依賴包,自己項目模塊是<scope>compile</scope>,編譯打出的應用war包WEB-INF/lib沒有依賴的第三方jar,運行tomcat...
ps:1.運行后會發現打印的日志有異常,主要是因為shared/lib包由單獨的類加載器加載,沒找到日志配置就是用默認配置,把我們的logback.xml放在shared/lib就好了
2.按照日志的思路,我們是不是也可以把配置文件放在shared/lib,spring容器也是可以找到的。在我們不想把服務器上的配置暴露給開發者時這種方式是很有必要的