国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

maven打包oracle jdbc驅動

vvpvvp / 2231人閱讀

摘要:背景由于版權問題,中央倉庫缺少的驅動,這個給開發帶來了很多不便利性。本文主要探討的就是第三個問題,怎么把驅動打到包里背景交代完畢,正文開始。是的,如果你只是想在本地打一個包,這種方式簡單方便。

背景

由于版權問題,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

相關文章

  • maven 初步

    摘要:在中配置可以使用國內的,提高下載速度使用代理服務默認不使用代理服務器,在通過代理服務器訪問網絡的情況下無法連接到倉庫。 maven 在$HOME.m2setting.xml 中配置 mirror 可以使用國內的aliyun mirror,提高下載速度 aliyun aliyun maven http://maven.aliyun.com/n...

    young.li 評論0 收藏0
  • spring-boot 同時配置Oracle和MySQL

    摘要:同時配置和配置文件數據庫驅動包因為在倉庫下載不到,就直接下載手動導入配置文件數據源配置類測試類啟動之后訪問看后臺有打印結果表示配置成功借鑒 Spring Boot 1.5.8.RELEASE同時配置Oracle和MySQL 配置POM文件 4.0.0 com.adagio demo 0.0.1-SNAPSHOT jar multi...

    zxhaaa 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<