itVincent Blog - Java Working Fun!

          技術引領時代!
          posts - 117, comments - 181, trackbacks - 0, articles - 12

          Maven Dependency Scope

          Posted on 2009-12-21 13:58 itVincent 閱讀(1264) 評論(0)  編輯  收藏 所屬分類: maven

           

          Dependency scope 是用來限制Dependency的作用范圍的, 影響maven項目在各個生命周期時導入的package的狀態。

          自從2.0.9后,新增了1種,現在有了6種scope:

          • compile
            默認的scope,表示 dependency 都可以在生命周期中使用。而且,這些dependencies 會傳遞到依賴的項目中。
          • provided
            跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。這個scope 只能作用在編譯和測試時,同時沒有傳遞性。        
          • runtime
            表示dependency不作用在編譯時,但會作用在運行和測試時 
          • test
            表示dependency作用在測試時,不作用在運行時。
          • system
            跟provided 相似,但是在系統中要以外部JAR包的形式提供,maven不會在repository查找它。 例如:

          <project>
          ...
          <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>
          ...
          </project>

           

          • import (Maven 2.0.9 之后新增)
            它只使用在<dependencyManagement>中,表示從其它的pom中導入dependency的配置,例如:    This scope is only used on a dependency of type pom in the <dependencyManagement> section. It indicates that the specified POM should be replaced with the dependencies in that 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.

            <project>

           <modelVersion>4.0.0</modelVersion>

           <groupId>maven</groupId>

           <artifactId>B</artifactId>

           <packaging>pom</packaging>

           <name>B</name>

           <version>1.0</version>

           <dependencyManagement>

              <dependencies>

                <dependency>

                  <groupId>maven</groupId>

                  <artifactId>A</artifactId>

                  <version>1.0</version>

                  <type>pom</type>

                  <scope>import</scope>

                </dependency>

                <dependency>

                  <groupId>test</groupId>

                  <artifactId>d</artifactId>

                  <version>1.0</version>

                </dependency>

              </dependencies>

           </dependencyManagement>

          </project>

          B項目導入A項目中的包配置

          主站蜘蛛池模板: 大田县| 斗六市| 榆树市| 历史| 华容县| 工布江达县| 岳西县| 来安县| 长白| 滨州市| 缙云县| 和林格尔县| 页游| 郴州市| 青神县| 麻城市| 江永县| 鞍山市| 陆河县| 广河县| 新巴尔虎左旗| 巫山县| 宁强县| 革吉县| 浦县| 达日县| 平定县| 贺兰县| 会泽县| 泸水县| 泸州市| 溧水县| 屏边| 习水县| 靖宇县| 陇西县| 安义县| 工布江达县| 夹江县| 成安县| 郴州市|