pom文件依賴system 打包不依賴 解決方案

//例子
<scope>system</scope>
//應用外置jar包
<dependency>
    <groupId>jeewx</groupId>
    <artifactId>jeewx</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/jeewx-1.0.jar</systemPath>
</dependency>
scope  maven中scope的默認值是compile

scope的分類

1)compile 默認是compile。compile表示被依賴項目需要參與當前項目的編譯,包括後續的測試,運行週期也參與其中,是一個比較強的依賴。打包的時候通常需要包含進去。

2)test 表示依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯,執行。比較典型的如junit

3)runtime 表示被依賴項目無需參與項目的編譯,不過後期的測試和運行週期需要其參與。與compile相比,跳過編譯而已。在終端的項目(非開源,企業內部系統)中,和compile區別不是很大。比較常見的如JSRXXX的實現,對應的API jar是compile,具體實現是runtime的,compile只需要知道接口就足夠了。oracle jdbc驅動jar包就是一個很好的例子,一般scope爲runtime。  另runtime的依賴通常和optional搭配使用,optional爲true。即可以用A實現也可以用B實現。

4)procided 意味着打包的時候可以不用包進去,別的設施(web container)會提供。事實上該依賴理論上可以參與編譯、測試、運行等週期。相當於compile,但是打包階段做了exclude的動作。

5)system 和provide相同,不過被依賴項不會從maven倉庫抓,而是從本地系統文件拿,一定要配合systemPath使用

 

systempath

當maven依賴本地而非repository中的jar包,sytemPath指明本地jar包路徑

解決方案一:

將本地應用的jar包上傳值公司私服(需要去改maven的私服地址)然後常規應用

<dependency>
    <groupId>jeewx</groupId>
    <artifactId>jeewx</artifactId>
    <version>1.0</version>
</dependency>
解決方案二:

將自己需要依賴的jar 打包到本地maven 庫 (前提的配置好本地mvn)

打開cmd 窗口 輸入

mvn install:install-file -Dfile=c:/xxx/xxx.jar -DgroupId=jeewx -DartifactId=jeewx-Dversion=1.0 -Dpackaging=jar  

 

解決方案三:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>
解決方案四:

修改 xxxx.MF文件 裏面的jar引用 加上自己需要的jar包 按空格分隔 (這種有個大問題是每次都得改xxx.MF文件不太方便)

 
————————————————
版權聲明:本文爲CSDN博主「do_you_like_van_game」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/do_you_like_van_game/article/details/96148321

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章