成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

maven打包oracle jdbc驅(qū)動(dòng)

vvpvvp / 2255人閱讀

摘要:背景由于版權(quán)問(wèn)題,中央倉(cāng)庫(kù)缺少的驅(qū)動(dòng),這個(gè)給開(kāi)發(fā)帶來(lái)了很多不便利性。本文主要探討的就是第三個(gè)問(wèn)題,怎么把驅(qū)動(dòng)打到包里背景交代完畢,正文開(kāi)始。是的,如果你只是想在本地打一個(gè)包,這種方式簡(jiǎn)單方便。

背景

由于版權(quán)問(wèn)題,maven中央倉(cāng)庫(kù)缺少oracle jdbc的驅(qū)動(dòng),這個(gè)給開(kāi)發(fā)帶來(lái)了很多不便利性。也出現(xiàn)各種各樣的解決方案,基本就兩種思路:

將oracle驅(qū)動(dòng)安裝到本地倉(cāng)庫(kù),這個(gè)需要大家統(tǒng)一好名稱(chēng)和版本

使用第三方倉(cāng)庫(kù)

不管哪種方案,本來(lái)maven就是為了方便開(kāi)發(fā)人員管理包依賴(lài),這樣一來(lái)反而更麻煩。當(dāng)然,不是maven的錯(cuò),oracle這事做的確實(shí)夠sb。(聽(tīng)說(shuō)oracle要對(duì)java進(jìn)行收費(fèi)???)
那么有沒(méi)有更好的方案,假設(shè)你現(xiàn)在開(kāi)發(fā)了一個(gè)框架,框架支持多數(shù)據(jù)庫(kù),并且已經(jīng)將jar包提交至maven中央倉(cāng)庫(kù),如果你的jar包里面就已經(jīng)包含了oracle驅(qū)動(dòng),那么使用框架的人就不用額外再去導(dǎo)入驅(qū)動(dòng)。

這種方案有以下幾個(gè)小問(wèn)題

會(huì)不會(huì)有版權(quán)問(wèn)題(這個(gè)不是很了解)

驅(qū)動(dòng)升級(jí)怎么辦

怎么把驅(qū)動(dòng)打到j(luò)ar包里

關(guān)于驅(qū)動(dòng)升級(jí)問(wèn)題,可以對(duì)jar包發(fā)布多個(gè)版本,比如純凈版不包含驅(qū)動(dòng),驅(qū)動(dòng)xxx版包含不同版本的驅(qū)動(dòng)。

本文主要探討的就是第三個(gè)問(wèn)題,怎么把驅(qū)動(dòng)打到j(luò)ar包里

背景交代完畢,正文開(kāi)始。

實(shí)現(xiàn) 遇到的問(wèn)題

你可能覺(jué)得,這是個(gè)很簡(jiǎn)單的事,通過(guò)idea的Artifacts不就行了。是的,如果你只是想在本地打一個(gè)jar包,這種方式簡(jiǎn)單方便。但如果要上傳到maven,就得使用maven來(lái)打包,maven是不管你ide是怎么配置的,而且maven不會(huì)將依賴(lài)包打到j(luò)ar包里的。有幾個(gè)方案可以考慮

借助maven插件maven-assembly-plugin可以實(shí)現(xiàn)自定義打包,但是該插件是將依賴(lài)包全部放在lib目錄下,這個(gè)不是我的本意,我的本意是將依賴(lài)包里的class文件解壓到根目錄下,和自開(kāi)發(fā)的jar包同一個(gè)目錄下。(這個(gè)插件我研究了很久不能實(shí)現(xiàn)就放棄了,如果有知道怎么實(shí)現(xiàn)的讀者歡迎留言)

自己寫(xiě)插件實(shí)現(xiàn),其實(shí)難度也不大,就是麻煩點(diǎn)

借助maven腳本執(zhí)行插件exec-maven-plugin執(zhí)行自定義腳本對(duì)maven打包后的jar包進(jìn)行"改造"。

最終選擇了第三個(gè)方案,寫(xiě)shell腳本實(shí)現(xiàn)自定義打包

配置

首先引入插件的依賴(lài)
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:在打包這個(gè)生命周期結(jié)束后執(zhí)行該腳本

executable:腳本目錄位置

arguments:傳給腳本的參數(shù),這里傳了三個(gè)參數(shù)

${basedir}:當(dāng)前目錄,就是項(xiàng)目所在目錄

${project.build.directory}:maven構(gòu)建目錄,就是target目錄

${project.build.finalName}:maven打包名稱(chēng)

/you/path/ojdbc6.jar:要打進(jìn)去的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

整個(gè)腳本的大概流程如下

創(chuàng)建一個(gè)臨時(shí)目錄v_workspace

將依賴(lài)包復(fù)制到臨時(shí)目錄下

解壓依賴(lài)包

刪除jar包和META-INF文件夾

將項(xiàng)目的jar包復(fù)制到臨時(shí)目錄下

遍歷所有文件夾,將文件夾通過(guò)命令jar -uf更新到項(xiàng)目jar包里

用新的jar包替換掉老的jar包

寫(xiě)在最后

現(xiàn)在腳本里只支持一個(gè)jar包,稍微修改下就可以支持多個(gè),或者你可以在自己本地把多個(gè)jar包用jar -uf打到一個(gè)jar包里,再執(zhí)行腳本。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72255.html

相關(guān)文章

  • maven 初步

    摘要:在中配置可以使用國(guó)內(nèi)的,提高下載速度使用代理服務(wù)默認(rèn)不使用代理服務(wù)器,在通過(guò)代理服務(wù)器訪問(wèn)網(wǎng)絡(luò)的情況下無(wú)法連接到倉(cāng)庫(kù)。 maven 在$HOME.m2setting.xml 中配置 mirror 可以使用國(guó)內(nèi)的aliyun mirror,提高下載速度 aliyun aliyun maven http://maven.aliyun.com/n...

    young.li 評(píng)論0 收藏0
  • spring-boot 同時(shí)配置Oracle和MySQL

    摘要:同時(shí)配置和配置文件數(shù)據(jù)庫(kù)驅(qū)動(dòng)包因?yàn)樵趥}(cāng)庫(kù)下載不到,就直接下載手動(dòng)導(dǎo)入配置文件數(shù)據(jù)源配置類(lèi)測(cè)試類(lèi)啟動(dòng)之后訪問(wèn)看后臺(tái)有打印結(jié)果表示配置成功借鑒 Spring Boot 1.5.8.RELEASE同時(shí)配置Oracle和MySQL 配置POM文件 4.0.0 com.adagio demo 0.0.1-SNAPSHOT jar multi...

    zxhaaa 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<