maven引入本地jar包的方法(轉發)
maven引入本地jar包的方法
maven project引入本地ar包你是如何處理的呢?maven作為包管理工具,好處不必多說
但是有些情況,比如需要引入第三方包,如快遞鳥,支付寶,微信等jar包(當然有可能直接提供maven依賴)
如果直接下載到本地之後,怎麼整合到自己的maven工程呢?
方式挺多的,下面列舉四種方式
1. 上傳到maven中心倉庫
願意折騰可也搞搞,可以參考如何釋出Jar包到Maven中央倉庫(確實比較麻煩)
如這是我手動上傳到maven中央倉庫的jar包https://mvnrepository.com/search?q=chendahai
優點:可以直接在pom.xml中引入,打包部署沒有問題
缺點:上傳複雜,麻煩(建立工單,生成祕鑰等等)
2. 搭建maven私服
手動在後臺管理頁面上傳,之後pom.xml引入
上傳方式檢視maven私服nexus上傳第三方jar包以及下載
優點:下載速度快,maven聚合專案更適用,內部適用deploy即可,打包部署沒有問題
缺點:相比第一種還要麻煩些,還佔用本地伺服器資源
3. 傳統方式
java SE的套路
新建lib包,之後匯入(eclipse直接build path)(idea麻煩些:File→project structure→libraries→+jar包)
優點:簡單,不用做額外的配置
缺點:協作開發,多人都需做同樣的操作,溝通也是一回事
4. pom檔案scope的system屬性
優點:配置後之後直接引入,mavenreImport即可
缺點:沒啥缺點,就是配置者得費些時間
前置條件
要引入如下taobao-sdk-java.jar
操作
- 自定義目錄,這裡在project的根目錄新建lib資料夾,將jar放進去
- pom.xml中引入
<dependency> <groupId>dingding</groupId> <artifactId>dingding</artifactId> <version>2.8</version> <scope>system</scope> <systemPath>${project.basedir}/lib/taobao-sdk-java.jar</systemPath> </dependency>
注意:
- groupId:自定義
- artifactId:自定義
- version:自定義
- scope:必須是system
- systemPath:jar包的路徑(idea編寫的時候會有提示的)
通過上述方式,在開發環境沒有什麼問題,不會存在什麼包找不到等情況
但是,maven project部署一般打包釋出,所以打包是需要額外配置的(上述的第一二中方式不需要做額外處理)
處理打包
打包的時候需要做如下配置,需要通過resource標籤引入,位置build→resources→resource
<build> <resources> <resource> <directory>lib</directory> <targetPath>/BOOT-INF/lib/</targetPath> <includes> <include>**/*.jar</include> </includes> </resource> </resources> </build>
- directory:指定lib資料夾的位置,由於是相對工程根目錄,所以直接寫上lib即可
- targetPath:打包到的資料夾位置,寫上BOOT-INF/lib即可,或者是WEB-INF/lib。【斜槓(/)加不加都行,如果是mac的話寫./】
- includes:一般都是以jar結尾,就寫**/*.jar
較為完整的pom.xml
<dependency> <groupId>dingding</groupId> <artifactId>dingding</artifactId> <version>2.8</version> <scope>system</scope> <systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1479188381469-20190628.jar</systemPath> </dependency> </dependencies> <build> <resources> <resource> <directory>lib</directory> <targetPath>/BOOT-INF/lib/</targetPath> <includes> <include>**/*.jar</include> </includes> </resource> </resources>
ok,mvn package即可。
原文連結:https://www.cnblogs.com/chywx/p/11563318.html