之前寫過shade解決mybatis包沖突的文章,主要講了如何為一個第三方包去打一個shade包,然后它可以解決相同包的不同版本之間的沖突問題;而今天主要說一下在專案里如何參考這個包,
1 如果只是使用包里的資源,而不使用這個包的依賴包,需要這樣參考即可
<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去掉
<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的屬性來定義路徑
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114413.html
標籤:Java
