最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解pom如何引入非Maven工程的jar包

 更新時(shí)間:2023年12月20日 10:54:30   作者:暗黑腐竹  
系統(tǒng)遷移從某個(gè)公有云遷移到私有云,因?yàn)楝F(xiàn)在國(guó)內(nèi)大力推行國(guó)產(chǎn)化,所以我們這次遷移有兩個(gè)國(guó)產(chǎn)化的東西,第一個(gè)是操作系統(tǒng)采用了歐拉操作系統(tǒng),第二個(gè)就是數(shù)據(jù)庫(kù)采用了goldendb,本文給大家詳細(xì)介紹了pom如何引入非Maven工程的jar包,需要的朋友可以參考下

背景

系統(tǒng)遷移從某個(gè)公有云遷移到私有云,因?yàn)楝F(xiàn)在國(guó)內(nèi)大力推行國(guó)產(chǎn)化,所以我們這次遷移有兩個(gè)國(guó)產(chǎn)化的東西(這里不包括硬件)。第一個(gè)是操作系統(tǒng)采用了歐拉操作系統(tǒng)(華為爸爸出產(chǎn)據(jù)說(shuō)已捐),第二個(gè)就是數(shù)據(jù)庫(kù)采用了goldendb。

這次記錄這個(gè)問(wèn)題主要是因?yàn)槭褂锰峁┑膅oldendb的驅(qū)動(dòng)連接不上數(shù)據(jù)庫(kù),啟動(dòng)的時(shí)候報(bào)錯(cuò)。這次我們使用的對(duì)方提供的gdb_mysql-connector-java-5.1.46.28.jar這個(gè)驅(qū)動(dòng),而且是一個(gè)普通工程打成的jar包。

maven工程打包結(jié)構(gòu)中包含pom文件:

而普通工程打包后,是不存在pom文件的:

問(wèn)題

這個(gè)jar包如何使用,用maven私庫(kù)管理?直接引用?當(dāng)作外部jar包加載?這個(gè)時(shí)候發(fā)現(xiàn)自己的儲(chǔ)備已經(jīng)不夠用。

分析

因?yàn)楸镜貨](méi)有g(shù)oldendb只能使用mysql8做測(cè)試,驅(qū)動(dòng)使用gdb_mysql-connector-java-5.1.46.28.jar。

方案一:通過(guò)web頁(yè)面上傳jar包到nexus私庫(kù)中,使用pom依賴(lài)引入,失敗現(xiàn)象下載的jar是空包;

方案二:使用java -jar -Dload.path,但百度告訴我應(yīng)該使用java -cp path/to/external.jar -jar yourJarFile.jar;

方案三:使用maven命令將驅(qū)動(dòng)jar包推入nexus私服中;

方案四:在項(xiàng)目中的pom文件中使用如下配置,引入jar包;

方案一

使用管理員賬號(hào)登錄自己或者公司搭建的nexus私服,找到左邊upload菜單,選中目標(biāo)倉(cāng)庫(kù)進(jìn)行上傳界面如下(圖片為nexus3的界面僅供參考):

*注意: *最后的packaging填上jar

上傳是成功的,因?yàn)樵趥}(cāng)庫(kù)里是能找到對(duì)應(yīng)的包和內(nèi)容的(網(wǎng)絡(luò)圖片僅供參考):

但是,下載的時(shí)候卻是不成功的,因?yàn)槊看蜗螺d下來(lái)的依賴(lài)包只有6kb:

然而服務(wù)器上是975kb:

那就說(shuō)明普通java工程打jar不能通過(guò)這種方式直接上傳,可能使用maven命令將驅(qū)動(dòng)jar包推入nexus私服中,只是猜測(cè)需要驗(yàn)證,方案一行不通。

方案四

新建一個(gè)springboot maven項(xiàng)目,在application中增加數(shù)據(jù)源的配置:

spring:
    datasource:
       username: rrbbd
       password: gfdgdf
       driver-class-name: com.goldendb.jdbc.Driver
       url: jdbc:goldendb:loadbalance://localhost:3306/monster?useCursorFetch=false&useSSL=false&cachePrepStmts=true&prepStmtCacheSqlLimit=20480&prepStmtCacheSize=2000&characterEncoding=utf8&queryTimeoutKillsConnection=true&isConnectionLevel=true&connectTimeout=60000&shadowThreadSwitch=False

使用了大佬提供的maven配置進(jìn)行測(cè)試,在工程resources目錄下創(chuàng)建lib目錄,通過(guò)在pom中增加如下配置來(lái)引入jar包:

<dependency>
        <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.46</version>
       <scope>system</scope>
       <systemPath>${project.basedir}/src/main/resources/lib/gdb_mysql-connector-java-5.1.46.28.jar</systemPath>
</dependency>

*注意: *這里的groupId、artifactId、version可隨便命名

然后根據(jù)自己的表創(chuàng)建一個(gè)jdbc查詢(xún)語(yǔ)句,用于測(cè)試:

Connection con = dataSource.getConnection();
Statement stmt = con.createStatement();
String sql = "select * from t_user;";
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData metaData = rs.getMetaData();
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
log.info("id:{}", id);
log.info("name:{}", name);
}
con.close();

工程的目錄結(jié)構(gòu):

異常報(bào)錯(cuò)

第一次在idea中啟動(dòng)報(bào)java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.

問(wèn)題原因

這是mysql 8.0版本才出現(xiàn)的問(wèn)題,原因是mysql 8.0 默認(rèn)使用 caching_sha2_password 身份驗(yàn)證機(jī)制 —— 從原來(lái)的 mysql_native_password 更改為 caching_sha2_password。所以一般這種報(bào)錯(cuò)由于本地的MySQL使用的是最新版8.0版本,而打包的項(xiàng)目使用的則是比較低的版本,可以解釋說(shuō)是版本沖突產(chǎn)生的問(wèn)題。

解決方法

方案1:安裝較低版本的MySQL

方案2:修改身份驗(yàn)證機(jī)制:

alter user 'root'@'localhost' identified by '你的密碼' password expire never;
?
alter user 'root'@'localhost' identified with mysql_native_password by '你的密碼'
?
flush privileges;

解決認(rèn)證問(wèn)題,在idea中啟動(dòng)能夠成功連接數(shù)據(jù)庫(kù)并讀取數(shù)據(jù)如下圖:

打包使用命令啟動(dòng)發(fā)現(xiàn),任然報(bào)找不到驅(qū)動(dòng):

檢查jar包中驅(qū)動(dòng)已經(jīng)打包進(jìn)去了:

大佬又花了幾分鐘搞了個(gè)測(cè)試,增加了一個(gè)springboot maven打包插件的參數(shù),如下:

再次打包使用java -jar也成功連接上了mysql數(shù)據(jù)庫(kù),同時(shí)也讀出來(lái)了數(shù)據(jù)。

結(jié)論

方案二和方案三還沒(méi)有進(jìn)行測(cè)試后續(xù)再補(bǔ)充,總歸還是自己對(duì)maven不夠了解。至于手動(dòng)上傳普通java jar包到nexus無(wú)法下載,我猜可能因?yàn)橄螺d的機(jī)制需要驗(yàn)證groupId、artifactId、version與jar包中的pom文件中的定義一樣。也就是手動(dòng)上傳至少需要這個(gè)jar包本身就是一個(gè)maven工程打的包含有pom文件,但這個(gè)猜測(cè)也需要驗(yàn)證。

總結(jié)

一開(kāi)始,使用驅(qū)動(dòng)直接在項(xiàng)目中替換,改apollo配置嘗試啟動(dòng)。改來(lái)改去我總覺(jué)得排查問(wèn)題的干擾因素太多,那為什么不簡(jiǎn)單一點(diǎn)呢?我們直接寫(xiě)一個(gè)demo用jdbc查詢(xún)一個(gè)測(cè)試表,將數(shù)據(jù)展示出來(lái)。這樣就簡(jiǎn)單多了,我們關(guān)注問(wèn)題本身,排除其他因素的干擾。讀不到驅(qū)動(dòng),不是包沒(méi)有引入,就是配置有問(wèn)題,這樣我們可以集中精力去做更多的嘗試。如果包也引入了,配置也沒(méi)問(wèn)題,那再排查其他問(wèn)題。我認(rèn)為這種控制變量因素最小化,可以幫助我們來(lái)更快地定位到問(wèn)題以及解決問(wèn)題。記錄一下問(wèn)題排查的過(guò)程,方便以后自己和別人查閱。如果文章有錯(cuò)誤的描述或者需要修正可以留言聯(lián)系我。

遺留問(wèn)題

問(wèn)題雖然解決了,但還遺留兩個(gè)問(wèn)題。

問(wèn)題1:普通工程的jar是否可以使用nexus進(jìn)行管理?是否使用maven命令叫jar推到私庫(kù)里方式就可以了呢?這個(gè)問(wèn)題還需要驗(yàn)證。

問(wèn)題2:是否可以使用啟動(dòng)命令java上-cp來(lái)加載外部jar依賴(lài)?這種方式是否能是程序讀到依賴(lài)的驅(qū)動(dòng)也還需要驗(yàn)證。

以上就是詳解pom如何引入非Maven工程的jar包的詳細(xì)內(nèi)容,更多關(guān)于pom引入非Maven jar包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • TK-MyBatis 分頁(yè)查詢(xún)的具體使用

    TK-MyBatis 分頁(yè)查詢(xún)的具體使用

    分頁(yè)查詢(xún)?cè)诤芏嗟胤蕉伎梢允褂玫?,本文就詳?xì)的介紹了一下TK-MyBatis 分頁(yè)查詢(xún)的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • springboot jpaRepository為何一定要對(duì)Entity序列化

    springboot jpaRepository為何一定要對(duì)Entity序列化

    這篇文章主要介紹了springboot jpaRepository為何一定要對(duì)Entity序列化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • MyBatis?Generator?ORM層面的代碼自動(dòng)生成器(推薦)

    MyBatis?Generator?ORM層面的代碼自動(dòng)生成器(推薦)

    Mybatis?Generator是一個(gè)專(zhuān)門(mén)為?MyBatis和?ibatis框架使用者提供的代碼生成器,也可以快速的根據(jù)數(shù)據(jù)表生成對(duì)應(yīng)的pojo類(lèi)、Mapper接口、Mapper文件,甚至生成QBC風(fēng)格的查詢(xún)對(duì)象,這篇文章主要介紹了MyBatis?Generator?ORM層面的代碼自動(dòng)生成器,需要的朋友可以參考下
    2023-01-01
  • springboot如何通過(guò)@PropertySource加載自定義yml文件

    springboot如何通過(guò)@PropertySource加載自定義yml文件

    這篇文章主要介紹了springboot如何通過(guò)@PropertySource加載自定義yml文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java并發(fā)編程示例(六):等待線程執(zhí)行終止

    Java并發(fā)編程示例(六):等待線程執(zhí)行終止

    這篇文章主要介紹了Java并發(fā)編程示例(六):等待線程執(zhí)行終止,在本節(jié),示例程序演示等待初始化方法完成后,再去執(zhí)行其他任務(wù),需要的朋友可以參考下
    2014-12-12
  • Java Web程序?qū)崿F(xiàn)返回JSON字符串的方法總結(jié)

    Java Web程序?qū)崿F(xiàn)返回JSON字符串的方法總結(jié)

    Java Web服務(wù)器端只要把Java對(duì)象數(shù)據(jù)轉(zhuǎn)成JSON字符串,把JSON字符串以文本的形式通過(guò)response輸出即可,
    2016-05-05
  • nacos使用外部數(shù)據(jù)庫(kù)部署到k8s實(shí)踐

    nacos使用外部數(shù)據(jù)庫(kù)部署到k8s實(shí)踐

    Nacos 是一個(gè)用于發(fā)現(xiàn)、配置和管理微服務(wù)的平臺(tái),提供了一系列簡(jiǎn)單易用的特性,幫助快速實(shí)現(xiàn)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理,通過(guò)簡(jiǎn)單的安裝和部署,可以快速構(gòu)建、交付和管理微服務(wù)平臺(tái)
    2026-02-02
  • 基于SpringBoot實(shí)現(xiàn)Web應(yīng)用的登錄與退出功能

    基于SpringBoot實(shí)現(xiàn)Web應(yīng)用的登錄與退出功能

    登錄與退出功能作為 Web 應(yīng)用中的基礎(chǔ)且重要的組成部分,直接關(guān)系到用戶的安全和隱私保護(hù),所以本文給大家介紹了基于SpringBoot實(shí)現(xiàn)Web應(yīng)用的登錄與退出功能,文中有詳細(xì)的代碼供大家參考,需要的朋友可以參考下
    2024-04-04
  • 關(guān)于ZooKeeper原理剖析

    關(guān)于ZooKeeper原理剖析

    ZooKeeper是一種分布式、高可用性的協(xié)調(diào)服務(wù),主要用于幫助系統(tǒng)避免單點(diǎn)故障和建立可靠的應(yīng)用程序,它通過(guò)Leader、Follower和Observer的角色來(lái)協(xié)調(diào)節(jié)點(diǎn),并提供分布式協(xié)作服務(wù)和維護(hù)配置信息,ZooKeeper在HDFS、YARN、HBase、SmallFS和Kafka等大數(shù)據(jù)產(chǎn)品中都有廣泛的應(yīng)用
    2025-02-02
  • Mybatis useGeneratedKeys參數(shù)用法及問(wèn)題小結(jié)

    Mybatis useGeneratedKeys參數(shù)用法及問(wèn)題小結(jié)

    這篇文章主要介紹了Mybatis useGeneratedKeys參數(shù)用法及遇到的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

沁水县| 吉木乃县| 泉州市| 大兴区| 镇远县| 潞西市| 兰西县| 电白县| 修水县| 安图县| 盖州市| 毕节市| 沾化县| 酒泉市| 阜新| 南雄市| 漳州市| 措美县| 开封市| 剑河县| 蒲城县| 柯坪县| 丹东市| 翁源县| 理塘县| 高台县| 深水埗区| 通化县| 阜阳市| 合肥市| 普宁市| 北碚区| 遂溪县| 咸宁市| 重庆市| 城口县| 新安县| 淮滨县| 运城市| 金堂县| 宁波市|