shade解決mybatis包(bao)沖(chong)突~項目引用的方法(fa)
之前寫過shade解決mybatis包沖突的文章,主要講了如何為一個第三方包去打一個shade包,然后它可以解決相同包的不同版本之間的沖突問題;而今天主要說一下在項目里如何引用這個包。
1 如果只(zhi)是使用(yong)(yong)包(bao)里的資源,而不使用(yong)(yong)這(zhe)個包(bao)的依(yi)賴包(bao),需要這(zhe)樣引用(yong)(yong)即可
<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 如果在引用包里,還(huan)需要(yao)使用它的依賴包,需要(yao)把system去掉
<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配置文件里的(de)scope是作用域的(de)意思,下面介(jie)紹(shao)一下幾種(zhong)scope
- compile:默認值 他表示被依賴項目需要參與當前項目的編譯,還有后續的測試,運行周期也參與其中,是一個比較強的依賴。打包的時候通常需要包含進去
- test:依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯和執行,不會被打包,例如:junit
- runtime:表示被依賴項目無需參與項目的編譯,不過后期的測試和運行周期需要其參與。與compile相比,跳過了編譯而已。例如JDBC驅動,適用運行和測試階段
- provided:打包的時候可以不用包進去,別的設施會提供。事實上該依賴理論上可以參與編譯,測試,運行等周期。相當于compile,但是打包階段做了exclude操作
- system:從參與度來說,和provided相同,不過被依賴項不會從maven倉庫下載,而是從本地文件系統拿。需要添加systemPath的屬性來定義路徑