maven中的

<scope>

1、compile:(默認值)表示被依賴項目需要參與當前項目的編譯,包括後續的測試,運行週期也參與其中,是一個比較強的依賴。打包的時候通常需要包含進去。

2、test:依賴項目僅僅參與測試相關的工作,包括測試代碼的編譯,執行。比較典型的如junit

3、runtime:表示被依賴項目無需參與項目的編譯,不過後期的測試和運行週期需要其參與。與compile相比,跳過編譯而已。在終端的項目(非開源,企業內部系統)中,和compile區別不是很大。比較常見的如JSRXXX的實現,對應的API jar是compile,具體實現是runtime的,compile只需要知道接口就足夠了。oracle jdbc驅動jar包就是一個很好的例子,一般scope爲runtime。  另runtime的依賴通常和optional搭配使用,optional爲true。即可以用A實現也可以用B實現。

4、procided:打包的時候可以不用包進去,別的設施(web container)會提供。事實上該依賴理論上可以參與編譯、測試、運行等週期。相當於compile,但是打包階段做了exclude的動作。

5、system:依賴項不會從maven倉庫抓,而是從本地系統文件拿,一定要配合<systemPath>使用。如Msc.jar是本地jar

<dependencies>
    <dependency>
      <groupId>com.iflytek</groupId>
      <artifactId>Msc</artifactId>
      <version>1.0</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/lib/Msc.jar</systemPath>
    </dependency>
</dependencies>

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章