摘要:背景由于版權問題,中央倉庫缺少的驅動,這個給開發帶來了很多不便利性。本文主要探討的就是第三個問題,怎么把驅動打到包里背景交代完畢,正文開始。是的,如果你只是想在本地打一個包,這種方式簡單方便。
背景
由于版權問題,maven中央倉庫缺少oracle jdbc的驅動,這個給開發帶來了很多不便利性。也出現各種各樣的解決方案,基本就兩種思路:
將oracle驅動安裝到本地倉庫,這個需要大家統一好名稱和版本
使用第三方倉庫
不管哪種方案,本來maven就是為了方便開發人員管理包依賴,這樣一來反而更麻煩。當然,不是maven的錯,oracle這事做的確實夠sb。(聽說oracle要對java進行收費???)
那么有沒有更好的方案,假設你現在開發了一個框架,框架支持多數據庫,并且已經將jar包提交至maven中央倉庫,如果你的jar包里面就已經包含了oracle驅動,那么使用框架的人就不用額外再去導入驅動。
這種方案有以下幾個小問題
會不會有版權問題(這個不是很了解)
驅動升級怎么辦
怎么把驅動打到jar包里
關于驅動升級問題,可以對jar包發布多個版本,比如純凈版不包含驅動,驅動xxx版包含不同版本的驅動。
本文主要探討的就是第三個問題,怎么把驅動打到jar包里
背景交代完畢,正文開始。
實現 遇到的問題你可能覺得,這是個很簡單的事,通過idea的Artifacts不就行了。是的,如果你只是想在本地打一個jar包,這種方式簡單方便。但如果要上傳到maven,就得使用maven來打包,maven是不管你ide是怎么配置的,而且maven不會將依賴包打到jar包里的。有幾個方案可以考慮
借助maven插件maven-assembly-plugin可以實現自定義打包,但是該插件是將依賴包全部放在lib目錄下,這個不是我的本意,我的本意是將依賴包里的class文件解壓到根目錄下,和自開發的jar包同一個目錄下。(這個插件我研究了很久不能實現就放棄了,如果有知道怎么實現的讀者歡迎留言)
自己寫插件實現,其實難度也不大,就是麻煩點
借助maven腳本執行插件exec-maven-plugin執行自定義腳本對maven打包后的jar包進行"改造"。
最終選擇了第三個方案,寫shell腳本實現自定義打包
配置首先引入插件的依賴
pom.xml
exec-maven-plugin org.codehaus.mojo asan package exec ${basedir}/scripts/package.sh ${project.build.directory} ${project.build.finalName} /Users/asan/u01/docker/lib/ojdbc6.jar
phase:在打包這個生命周期結束后執行該腳本
executable:腳本目錄位置
arguments:傳給腳本的參數,這里傳了三個參數
${basedir}:當前目錄,就是項目所在目錄
${project.build.directory}:maven構建目錄,就是target目錄
${project.build.finalName}:maven打包名稱
/you/path/ojdbc6.jar:要打進去的jar包路徑
腳本package.sh
v_workspace=$1/tmp v_name=$2.jar v_depency=$3 v_depency_name=`basename $3` echo "workspace==>$v_workspace" echo "name==>$v_name" echo $v_depency echo $v_depency_name rm -rf $v_workspace mkdir -p $v_workspace cp $v_depency $v_workspace cd $v_workspace jar -xf $v_workspace/$v_depency_name rm -rf $v_workspace/$v_depency_name rm -rf META-INF/ cp $1/$v_name $v_workspace for file in `ls $v_workspace` do if [ -d $file ] then jar -uf $v_workspace/$v_name $file fi done rm -rf $1/$v_name mv $v_workspace/$v_name $1/$v_name
整個腳本的大概流程如下
創建一個臨時目錄v_workspace
將依賴包復制到臨時目錄下
解壓依賴包
刪除jar包和META-INF文件夾
將項目的jar包復制到臨時目錄下
遍歷所有文件夾,將文件夾通過命令jar -uf更新到項目jar包里
用新的jar包替換掉老的jar包
寫在最后現在腳本里只支持一個jar包,稍微修改下就可以支持多個,或者你可以在自己本地把多個jar包用jar -uf打到一個jar包里,再執行腳本。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72255.html
摘要:同時配置和配置文件數據庫驅動包因為在倉庫下載不到,就直接下載手動導入配置文件數據源配置類測試類啟動之后訪問看后臺有打印結果表示配置成功借鑒 Spring Boot 1.5.8.RELEASE同時配置Oracle和MySQL 配置POM文件 4.0.0 com.adagio demo 0.0.1-SNAPSHOT jar multi...
閱讀 908·2023-04-25 18:51
閱讀 1863·2021-09-09 11:39
閱讀 3276·2019-08-30 15:53
閱讀 2090·2019-08-30 13:03
閱讀 1304·2019-08-29 16:17
閱讀 574·2019-08-29 11:33
閱讀 1878·2019-08-26 14:00
閱讀 2118·2019-08-26 13:41