之前寫過shade解決mybatis包沖突的文章,主要講了如何為一個第三方包去打一個shade包,然后它可以解決相同包的不同版本之間的沖突問題;而今天主要說一下在項目里如何引用這個包。
1 如果只是使用包里的資源,而不使用這個包的依賴包,需要這樣引用即可
1
2
3
4
5
6
7
|
<dependency> <groupId>com.lind</groupId> <artifactId>a-start-test-depend-shade</artifactId> <version> 1.0 . 4 </version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/a-start-test-depend-shade- 1.0 . 4 .jar</systemPath> </dependency> |
2 如果在引用包里,還需要使用它的依賴包,需要把system去掉
1
2
3
4
5
6
|
<dependency> <groupId>com.lind</groupId> <artifactId>a-start-test-depend-shade</artifactId> <version> 1.0 . 4 </version> <systemPath>${project.basedir}/src/main/resources/a-start-test-depend-shade- 1.0 . 4 .jar</systemPath> </dependency> |
3 注意:如果你的shade項目和你的當前項目在一起的話,可能能有問題
你可以把shade項目打完jar包之后,移除module,然后再試一下,就可以看到你的jar包里的對象被shade了
4 pom配置文件里的scope是作用域的意思,下面介紹一下幾種scope
- compile:默認值 他表示被依賴項目需要參與當前項目的編譯,還有后續的測試,運行周期也參與其中,是一個比較強的依賴。打包的時候通常需要包含進去
- test:依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯和執行,不會被打包,例如:junit
- runtime:表示被依賴項目無需參與項目的編譯,不過后期的測試和運行周期需要其參與。與compile相比,跳過了編譯而已。例如JDBC驅動,適用運行和測試階段
- provided:打包的時候可以不用包進去,別的設施會提供。事實上該依賴理論上可以參與編譯,測試,運行等周期。相當于compile,但是打包階段做了exclude操作
- system:從參與度來說,和provided相同,不過被依賴項不會從maven倉庫下載,而是從本地文件系統拿。需要添加systemPath的屬性來定義路徑
總結
到此這篇關于shade解決mybatis包沖突問題及項目引用的方法的文章就介紹到這了,更多相關shade解決mybatis包沖突內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://www.cnblogs.com/lori/p/13424944.html