依賴的Scope
scope定義了類包在項目的使用階段,scope分爲compile,test,runntime,provided,system五種。
1、compile
默認的就是compile,compile表示被依賴項目需要參與當前項目的編譯,當然後續的測試,運行週期也參與其中,是一個比較強的依賴。打包的時候通常需要包含進去。
2、test
test表示依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯,執行。比較典型的如junit。
3、runtime
runtime表示被依賴項目無需參與項目的編譯,不過後期的測試和運行週期需要其參與。與compile相比,跳過編譯,說實話在終端的項目(非開源,企業內部系統)中,和compile區別不是很大。
4、provided
provided意味着打包的時候可以不用包進去,別的設施(Web Container)會提供。事實上該依賴理論上可以參與編譯,測試,運行等週期。相當於compile,但是在打包階段做了exclude的動作。
5、system
從參與度來說,也provided相同,不過被依賴項不會從maven倉庫抓,而是從本地文件系統拿,一定需要配合systemPath屬性使用。
我這裏因爲引用釘釘的包,是直接放在項目裏的,所以選用了system,結果導致打成jar包後,運行立馬被終止,原因是缺包。。。
<!-- 釘釘sdk包 -->
<dependency>
<groupId>com.taobao.top</groupId>
<artifactId>top-api-sdk-dev</artifactId>
<version>ding-open-mc-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${pom.basedir}/lib/top-api-sdk-dev-ding-open-mc-20180719.091043-1.jar</systemPath>
</dependency>
<dependency>
<groupId>com.taobao.top</groupId>
<artifactId>lippi-oapi-encrpt</artifactId>
<version>dingtalk-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${pom.basedir}/lib/lippi-oapi-encrpt.jar</systemPath>
</dependency>
百度找了下方法,最簡單的就是強制打包所有,配置也比較簡單,加上如下代碼即可:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>