1. 程式人生 > >maven專案中dependency和dependenciesManagement的區別

maven專案中dependency和dependenciesManagement的區別

今天是新公司的入職第8天,一週多時間了.專案經理讓我自己寫一個介面,接收兩個引數,返回一個json資料,自己架以springmvc的框架,一個url路徑訪問,可以獲取到一個json資料.

就是建立一個maven的war檔案,匯入spring所依賴的jar包,尤其是spring-context,其中封裝了註解的類,不然進行@Controller註解的時候是不能導包的.本來是引用的之前的一個專案中的jar的座標,所以基本是這樣的,屬性中新增的spring的版本號就不顯示了..

<dependencyManagement>  
<!--spring的核心包-->
      <dependencies>  
            <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-core</artifactId>  
                 <version>${spring-version}</version>
     </dependency>  
           
               <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-content</artifactId>  
                <version>${spring-version}</version>
            </dependency>  
 </dependencies> </dependencyManagement>


但是這樣就行測試的時候,註解是不能正確導包的,仔細找了好久,發現並沒有所要依賴的spring的jar包在裡面,所以沒有註解是很正常的存在了..

後來將<dependencyManage>的標籤拿掉,直接依賴的時候,就看到了eclipse中的buildworkspace在build,證明一點我們的操作是有效果的,是在執行操作的.而且剛剛報紅的註解都已經好了...可算是度過了一關,其實,後面還有九九八十一難呢,任重道遠.

總結:

dependencyManagement其實只是一個管理jar的作用,是管理jar的版本,其他他的什麼作用都沒有,只是定義找到該jar的三維座標,並不是真正的去執行下載的jar的功能.

但是jar的版本宣告是有兩種方式的,

1,在dependencies中的依賴中如果沒有宣告jar的版本,就到dependenciesManage中去找,找到就使用,沒有就報錯

2,在dependencies中宣告jar的版本,則使用該版本,不管在dependenciesManage中有沒有宣告jar的version,都以該jar的版本為主.

其實還有一個知識點,是比較繞人的,但是也是個大坑,

我們在專案中需要引入一個框架S的jar包,S.jar.而S框架的開發者為了實現S框架又在pom中引入H框架,如果我們在專案中也使用了H框架,那麼H框架的版本是什麼呢?此時就是dependenciesManage的作用,不管怎樣,在dependenciesManage中只要有版本的宣告,就使用dm中的版本,就是這麼簡單粗暴!!!