maven是一個項目構建和管理工具。它可以方便的進行代碼編譯、依賴管理和項目發佈等。
一句話概括其原理:採用遠程倉庫和本地倉庫以及核心的pom.xml方式,其中pom.xml中定義的jar文件從遠程倉庫下載到本地倉庫,同一版本的jar只需下載一次。
配置本地倉庫:
=>在maven的文件夾下的conf子目錄的下:
設置倉庫位置
提示:建議先將原setting文件拷貝一份,比如我就拷貝爲settings_home.xml,以便之後使用。
pom.xml文件解析:
<groupId>---項目名稱
<artifactId>---模塊名稱(建議用“項目名_模塊名”設置)
<version>---版本
<dependencies>
<dependency>......</dependency>
</dependencies>---依賴的包們
<dependency>......</dependency>中
1、需要配置<groupId>、<artifactId>、<version>這三項(必須要配置的),來確保唯一性。
2、配置<scope>屬性來聲明該依賴會在何時用到(有時編譯的時候需要而生成war包不需要)
(1)、<scope>test</scope>-----編譯有效,在編譯、打包會用此依賴。
(1)、<scope>compile</scope>-----測試、編譯有效,編譯、打包不會用此依賴。
(1)、<scope>provided</scope>-----測試範圍有效,生成war包不會用此依賴(比如servlet-api)。
(1)、<scope>runtime</scope>-----運行有效,編譯不依賴。
一個模塊的基礎結構:
源代碼:src/main/java
源碼資源文件:src/main/resources
測試代碼:src/test/java
測試資源文件:src/test/resources
注意:這個結構可以以maven方式導入項目中哦。
maven中的聚合:
在實際開發中,如何將多個模塊進行一次編譯、打包、發佈呢?
需要在一個聚合項目(普通項目,只做聚合)中進行,只需要在聚合項目的pom.xml文件中加入
<packing>pom</packing>
<modules>
<module>../user-core</module>
<module>....../......</module>
</modules>
***若<packing>類型爲pom,<module>的值以pom爲主目錄的相對路徑哦
maven中的繼承:
類似於java的繼承概念,解決各個模塊中都依賴同樣的jar包,故提取成公共模塊。
在一個父模塊(普通項目,只做繼承)裏的maven的pom文件中定義了相關的常量、依賴、插件等。
在子模塊的pom.xml文件中配置<parent>
<parent><groupId>XXXXXX</groupId>
<artifactId>user-parent</artifactId>
<version>0.1.1-SNAPSHOT</version>
<relativePath>../user-parent/pom.xml</relativePath> //父模塊路徑
</parent>
那麼問題來了,如果每個子模塊有繼承父模塊的依賴,有些不需要腫麼辦呢?
解決方式是:將父模塊的依賴<dependencies>用<dependencyManagement>包裹
這樣就可以在子模塊中選擇需要的依賴了,如果子模塊需要該依賴,只需要在<dependency>.
<groupId>---項目名稱(同父模塊的)
<artifactId>---模塊名稱(同父模塊的)
這兩項,與父模塊形成一對一關係即可。
不知道我簡要概述的是否明白,還有eclipse部署maven、maven項目的部署發佈等詳細問題,可參考以下地址
http://download.csdn.net/detail/u013938465/8996365