Maven依賴簡介之依賴範圍

    首先貼出maven依賴配置語法java

<dependencies>
  	<dependency>
  		<groupId></groupId>
  		<artifactId>spring-core</artifactId>
  		<version></version>
  	    <type></type>
        <scope></scope>
        <optional></optional>
        <exclusions>
          <exclusion>
          </exclusion>
        <exclusions>
    </dependency>
</dependencies>

    groupId,artifactId,version就再也不介紹了,這是基本座標。spring

    type爲依賴的類型,scope依賴的範圍,optional標記依賴是否可選,exclusions用來排除傳遞性依賴。api

    基礎概念如上,今天重點理解依賴的範圍。maven

    在maven構建的時候,會有三套classpath(就比如java的classpath)。在編譯項目主代碼的時候會用到一套classpath,在進行編譯和測試的時候也會用到一套classpath,在真正運行的時候,也會用到一套classpath。ide

    依賴的範圍有如下幾種:compile,test,provided,runtime,system,import。測試

    其中system通常不推薦,由於從字面意思就能夠了解到引用了系統的環境變量,因此極可能不具有可移植性。spa

    compile是默認的依賴範圍。在沒有寫scope的時候,就是指定了compile範圍。code

    test,測試依賴範圍。在我以前使用maven的時候,junit的scope就是test。xml

    provided,已提供的依賴範圍。此依賴在編譯和測試classpath有效,在運行時無效。就行servlet api,編譯的時候用到了,運行的時候就不須要了。接口

    runtime,運行時依賴範圍。此依賴在測試和運行的時候有效,可是在編譯的時候無效。就像jdbc驅動,項目主代碼的編譯只須要提供jdk提供的jdbc驅動,只有在執行測試或者運行項目的時候才須要實現上述接口的具體jdbc驅動。

    import,導入依賴範圍。(暫時沒學到)

scope 編譯   測試 運行 example
compile Y   Y     Y spring-core
test --      Y -- JUnit
provided Y Y -- servlet-api
runtime -- Y Y JDBC驅動實現
system Y Y -- 本地的,maven倉庫以外的類庫文件
相關文章
相關標籤/搜索