Maven學習----Dependency scope

首先官網APIhtml

2.09版本以後,有6中scope。java

  Dependency scope 用來限制依賴的做用範圍,同時也做用於各類編譯路徑類路徑,下面詳細說明這六種路徑:web

  • compile
    這是默認範圍,Complie依賴對於整個工程可用,這些依賴也能夠傳遞到項目中。
  • provided
    很是相似於Compile,表示SDK或者容器在運行時提供。例如,用javaEE來編譯一個web spplication時,因爲容器已經提供這些類,你只需將Servlet API和相關的java EE APIs的範圍scope設置爲provided便可。這個範圍用於編譯和測試路徑,而且是不可傳遞的。例如:
<!-- Servlet -->  
        <dependency>  
            <groupId>javax.servlet</groupId>  
            <artifactId>servlet-api</artifactId>  
            <version>2.5</version>  
            <scope>provided</scope>  
        </dependency>  
        <dependency>  
            <groupId>javax.servlet.jsp</groupId>  
            <artifactId>jsp-api</artifactId>  
            <version>2.1</version>  
            <scope>provided</scope>  
        </dependency>  
  • runtime
    這個範圍代表依賴不作用於編譯時,可是做用於運行時。它是運行時和測試時路徑,不是編譯時路徑。
  • test
    這個範圍表示這個依賴不是程序正常使用的依賴,僅僅用於測試時,這個範圍不可傳遞。
  • system
    這個範圍相似與provided,可是須要在外部指定路徑,而且這個依賴不會在本地倉庫中查找。
<dependencies>
  <dependency>
   <groupId>javax.sql</groupId>
   <artifactId>jdbc-stdext</artifactId>
   <version>2.0</version>
   <scope>system</scope>
   <systemPath>${java.home}/lib/rt.jar</systemPath>
  </dependency>
</dependencies>
  • import(only available in Maven 2.0.9 or later)
    這個範圍僅僅用於<dependencyManagement>節點中,它表示依賴將被<dependencyManagement>裏面的依賴代替,由於這些依賴被代替了,有Import範圍的依賴並不限制依賴的傳遞性。原文爲: It indicates the dependency to be replaced with the effective list of dependencies in the specified POM's <dependencyManagement> section. Since they are replaced, dependencies with a scope of import do not actually participate in limiting the transitivity of a dependency.
相關文章
相關標籤/搜索