本教程將介紹如何使用Maven在Java開發,或任何其他的編程語言的任何項目。
Maven是什麼?
Maven是一個項目管理和綜合工具。Maven提供了開發人員構建一個完整的生命週期框架。開發團隊可以自動完成項目的基礎工具建設,Maven使用標準的目錄結構和默認構建生命週期。
在多個開發團隊環境時,Maven可以設置按標準在非常短的時間裏完成配置工作。由於大部分項目的設置都很簡單,並且可重複使用,Maven讓開發人員的工作更輕鬆,同時創建報表,檢查,構建和測試自動化設置。
Maven提供了開發人員的方式來管理:
Builds
Documentation
Reporting
Dependencies
SCMs
Releases
Distribution
mailing list
概括地說,Maven簡化和標準化項目建設過程。處理編譯,分配,文檔,團隊協作和其他任務的無縫連接。 Maven增加可重用性並負責建立相關的任務。
Maven歷史
Maven最初設計,是以簡化Jakarta Turbine項目的建設。在幾個項目,每個項目包含了不同的Ant構建文件。 JAR檢查到CVS。
Apache組織開發Maven可以建立多個項目,發佈項目信息,項目部署,在幾個項目中JAR文件提供團隊合作和幫助。
Maven目標
Maven主要目標是提供給開發人員:
項目是可重複使用,易維護,更容易理解的一個綜合模型。
插件或交互的工具,這種聲明性的模式。
Maven安裝和配置
- Maven下載
- Maven安裝
Maven資源庫
Maven 位置,中央和遠程存儲庫配置和解釋,有些術語可能需要在 Maven 使用前理解。
- Maven本地資源庫
Maven的本地資源庫是用來存儲所有項目的依賴關係(插件jar和其他文件,這些文件被Maven下載)到本地文件夾。很簡單,當你建立一個Maven項目,所有相關文件將被存儲在你的Maven本地倉庫。
默認情況下,Maven的本地資源庫默認爲 .m2 目錄文件夾:
- Unix/Mac OS X – ~/.m2
- Windows – C:\Documents and Settings\{your-username}\.m2
更新Maven本地資源庫
通常情況下,可改變默認的 .m2 目錄下的默認本地存儲庫文件夾到其他更有意義的名稱,例如, maven-repo
找到 {M2_HOME}\conf\setting.xml, 更新 localRepository 到其它名稱。
{M2_HOME}\conf\setting.xml<settings><!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ~/.m2/repository <localRepository>/path/to/local/repo</localRepository> --><localRepository>F:\apache-maven\repository</localRepository>
Maven中央存儲庫
當你建立一個 Maven 的項目,Maven 會檢查你的 pom.xml 文件,以確定哪些依賴下載。首先,Maven 將從本地資源庫獲得 Maven 的本地資源庫依賴資源,如果沒有找到,然後把它會從默認的 Maven 中央存儲庫 – http://repo1.maven.org/maven2/ 查找下載。
Maven 的中央資源庫網站是這樣的:
Maven中心儲存庫網站已經改版本,目錄瀏覽可能不再使用。這將直接被重定向到 http://search.maven.org/。這就好多了,現在有一個搜索功能:
PS:目錄瀏覽功能被禁用,但是,當你建立 Maven 的項目,它仍然會從 “http://repo1.maven.org/maven/” 得到依賴, 您可以從 Maven 驗證輸出。
根據 Apache Maven 的說明:
Downloading in Maven is triggered by a project declaring a dependency that is not present in the local repository (or for a SNAPSHOT, when the remote repository contains one that is newer). By default, Maven will download from the central repository.
在Maven中,當你聲明的庫不存在於本地存儲庫中,也沒有不存在於Maven中心儲存庫,該過程將停止並將錯誤消息輸出到 Maven 控制檯。
org.jvnet.localizer 只適用於 Java.net資源庫
<dependency> <groupId>org.jvnet.localizer</groupId> <artifactId>localizer</artifactId> <version>1.8</version> </dependency>聲明Java.net資源庫
告訴 Maven 來獲得 Java.net 的依賴,你需要聲明遠程倉庫在 pom.xml 文件這樣:
<repositories> <repository> <id>java.net</id> <url>https://maven.java.net/content/repositories/public/</url> </repository> </repositories>
現在,Maven的依賴庫查詢順序更改爲:
- 在 Maven 本地資源庫中搜索,如果沒有找到,進入第 2 步,否則退出。
- 在 Maven 中央存儲庫搜索,如果沒有找到,進入第 3 步,否則退出。
- 在java.net Maven的遠程存儲庫搜索,如果沒有找到,提示錯誤信息,否則退出。
Maven依賴機制
- 你需要知道 log4j 的 Maven 座標,例如:
<groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version>
它會自動下載 log4j 的1.2.14 版本庫。如果“version”標籤被忽略,它會自動升級庫時當有新的版本時。
- 聲明 Maven 的座標轉換成 pom.xml 文件。
<dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> </dependencies>
- 當 Maven 編譯或構建,log4j 的 jar 會自動下載,並把它放到 Maven 本地存儲庫
- 所有由 Maven 管理
當建立一個Maven的項目,pom.xml文件將被解析,如果看到 log4j 的 Maven 座標,然後 Maven 按此順序搜索 log4j 庫:
- 在 Maven 的本地倉庫搜索 log4j
- 在 Maven 中央存儲庫搜索 log4j
- 在 Maven 遠程倉庫搜索 log4j(如果在 pom.xml 中定義)
Maven 依賴庫管理是一個非常好的工具,爲您節省了大量的工作。
如何找到 Maven 座標?
訪問 Maven 中心儲存庫,搜索下載您想要的jar。