一、什么是maven,有什么用?
Maven是一個項目構建和管理的工具,其主要服務於基於java平台的項目構建、依賴管理和項目信息管理。它包含了一個項目對象模型 (Project Object Model),一組標准集合,一個項目生命周期Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然后Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
二、maven安裝
1.去maven官網下載並解壓maven,並配置環境變量
配置完成后在命令行cmd 運行mvn -version 查詢對應的版本號
2.配置文件settting.xml的簡單配置(最好是將setting.xml文件復制一份到本地倉庫中,然后進行修改)
①配置創建項目時默認的jdk版本,在<profiles></profiles>標簽中添加<profile></profile>,這樣每次update項目的時候就會變為默認的jdk版本,這里是默認全局設置的編譯版本
<profile> <id>jdk-1.7</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.7</jdk> </activation> <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion> </properties> </profile>
②配置私有倉庫的位置(maven所有的本地jar包都會放在私有倉庫里面),其默認位置是當前用戶目錄下.m2文件夾中。通過修改下面的路徑可以修改本地倉庫的位置。
③配置中央倉庫,使用阿里雲倉庫作為中央倉庫的鏡像,因為國外的倉庫訪問非常慢
<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
三、eclipse使用maven
eclipse 直接創建maven project ,項目結構如下:
四、pom文件解析
pom是項目對象模型(Project Object Model)的簡稱,是maven的核心,其定義了整個項目的基本信息,如何構建項目、項目依賴的jar包等。
簡單的pom解釋如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <!-- 組織名 --> <groupId>com.kyle</groupId> <!-- 定義了當前Maven項目在組中唯一的ID --> <artifactId>demo</artifactId> <!-- 版本號 --> <version>0.0.1-SNAPSHOT</version> <!-- 指定了POM模型的版本,對於Maven2及Maven3來說,它只能是4.0.0 --> <modelVersion>4.0.0</modelVersion> <!-- 項目打包方式有pom、jar、war等 --> <packaging>war</packaging> <!-- 項目名,maven產生文檔用 --> <name>demo</name> <url>http://maven.apache.org</url> <!-- 繼承的父項目 --> <!-- <parent> <groupId></groupId> <artifactId></artifactId> <version></version> </parent> --> <!--項目引入依賴包--> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>demo</finalName> <plugins> <!-- 引入插件,設置java編譯版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> </project>
詳細的pom解析:
https://www.cnblogs.com/oskyhg/p/6445589.html
https://blog.csdn.net/sunzhenhua0608/article/details/32938533
https://blog.csdn.net/wdx1121/article/details/79664385
五、maven的生命周期和相關命令
1.一個項目的構建過成通常包括清理、編譯、測試、打包、集成測試、驗證、部署等。Maven從中抽取了一套完善的、易擴展的生命周期。Maven的生命周期是抽象的,其中的具體任務都交由插件來完成。Maven為大多數構建任務編寫並綁定了默認的插件。
2.Maven定義了三套生命周期:clean、default、site,每個生命周期都包含了一些階段(phase)。三套生命周期相互獨立,但各個生命周期中的phase卻是有順序的,且后面的phase依賴於前面的phase。執行某個phase時,其前面的phase會依順序執行,但不會觸發另外兩套生命周期中的任何phase。
3.maven常見的命令
validate:驗證項目是正確的,所有必要的信息都是可用的
compile:編譯項目的源代碼
test:使用適當的單元測試框架測試編譯后的源代碼。這些測試不應要求將代碼打包或部署
package:使用已編譯的代碼,並將其打包成可分布格式,例如JAR。
verify:對集成測試的結果進行任何檢查,以確保滿足質量標准
install:將包安裝到本地存儲庫中,以便在本地其他項目中使用該包
deploy:在構建環境中完成,將最終的包復制到遠程存儲庫中,以便與其他開發人員和項目共享。
這些生命周期階段(加上這里沒有顯示的其他生命周期階段)是按順序執行的,以完成默認的生命周期。鑒於上面的生命周期階段,這意味着當使用默認的生命周期時,Maven將會優先執行檢查項目(validate),然后將會嘗試編譯源代碼(compile),運行集成測試方案(test),驗證了集成測試(verify),驗證包安裝到本地存儲庫(install),然后將安裝包部署到遠程存儲庫(deploy)。