maven打包,因爲scope標籤配置,導致無法將包打進jar

依賴的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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章