讀古今文學網 > Maven實戰 > 6.1 何為Maven倉庫 >

6.1 何為Maven倉庫

在Maven世界中,任何一個依賴、插件或者項目構建的輸出,都可以稱為構件。例如,依賴log4j-1.2.15.jar是一個構件,插件maven-compiler-plugin-2.0.2.jar是一個構件,第5章的account-email項目構建完成後的輸出account-email-1.0.0-SNAPSHOT.jar也是一個構件。任何一個構件都有一組坐標唯一標識。

在一台工作站上,可能會有幾十個Maven項目,所有項目都使用maven-compiler-plugin,這些項目中的大部分都用到了log4j,有一小部分用到了Spring Framework,還有另外一小部分用到了Struts2。在每個有需要的項目中都放置一份重複的log4j或者struts2顯然不是最好的解決方案,這樣做不僅造成了磁盤空間的浪費,而且也難於統一管理,文件的複製等操作也會降低構建的速度。而實際情況是,在不使用Maven的那些項目中,我們往往就能發現命名為lib/的目錄,各個項目lib/目錄下的內容存在大量的重複。

得益於坐標機制,任何Maven項目使用任何一個構件的方式都是完全相同的。在此基礎上,Maven可以在某個位置統一存儲所有Maven項目共享的構件,這個統一的位置就是倉庫。實際的Maven項目將不再各自存儲其依賴文件,它們只需要聲明這些依賴的坐標,在需要的時候(例如,編譯項目的時候需要將依賴加入到classpath中),Maven會自動根據坐標找到倉庫中的構件,並使用它們。

為了實現重用,項目構建完畢後生成的構件也可以安裝或者部署到倉庫中,供其他項目使用。