1、什麼是Maven
Maven是一種採用了約定優於配置思想的構建工具,它爲你項目配置和行爲提供了有意義的值,相對Ant構建項目結構和構建過程的高度自由不同,maven的項目目錄結構固定並且構建過程遵循一定的生命週期。
2、Maven安裝
1)Maven屬於解壓配置即可使用的軟件
下載解壓apache-maven-3.0.5-bin.zip,例如解壓:D:/ apache-maven-3.0.5
(2)window中設置ant環境變量:
ANT_HOME D:/ apache-maven-3.0.5
path D:/ apache-maven-3.0.5/bin
(3)開始->運行->cmd,輸入如下命令:mvn -v
3、固定的項目結構和構建生命週期
maven的管理的項目目錄結構是固定的,在構建過程中都遵循一定的構建生命週期
目錄結構:
生命週期(項目構建過程):
在構建方面可以繼承各種插件來實現構建功能,也可以自己書寫構建插件實現某些功能
4、依賴管理
(1)maven只需在pom.xml構建腳本中聲明依賴包的座標即可自動下載和管理外部依賴,例如:
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
(2)maven的依賴時通過依賴管理器管理的,依賴管理器通過pom.xml中依賴包的座標來查找或下載依賴,查找下載順序:本地maven倉庫,maven私服,遠程倉庫,例如:遠程倉庫依賴下載
(3)maven不僅可以通過依賴管理器依賴外部包,在多模塊項目開發中也可以很方便的管理個模塊之間的依賴
5、Maven實戰
項目目錄結構(假如其中demo爲D:\demo):
- demo
- |--src
- |----main
- |------java
- |--------com
- |-----------hello
- |--------------Hello.java(D:\demo\src\main\java\com\hello\Hello.java)
- |------resources
- |----test
- |------java
- |------resources
- |--pom.xml(D:\demo\pom.xml)
Hello.java
public class Hello{ public static void main(String[] args){ System.out.println("hello ant"); } }
pom.xml
下面是一個最基本的pom文件,配置了座標、版本號和項目打包方式其中插件maven-surefire-plugin和maven-compiler-plugin,這兩個插件是非必要的,如果不配置將採用默認插件配置
<?xml version="1.0" encoding="UTF-8"?> <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"> <modelVersion>4.0.0</modelVersion> <!--座標--> <groupId>com.hello</groupId> <artifactId>hello</artifactId> <!--版本號--> <version>1.0.0-SNAPSHOT</version> <name>hello</name> <!--項目打包方式--> <packaging>jar</packaging> <build> <plugins> <!--maven-surefire-plugin 是maven裏執行測試用例的插件--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <!--maven-compiler-plugin 是maven編譯打包插件--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> </project>
進入D:\demo目錄執行可以分別執行mvn clean 、mvn compile 、 mvn install 或者mvn clean compile 等等執行mvn命令
執行 mvn clean install 會有如下輸出:
從上面的輸出可以看出依次執行了maven-clean-plugin、maven-compiler-plugin.....、maven-install-plugin等插件,這個輸出直觀的反應了mvn默認生命週期有一個個插件按一定順序執行組成
執行 mvn clean install 會生成如下目錄結構:
項目目錄結構(假如其中demo爲D:\demo):
- demo
- |--src
- |----main
- |------java
- |--------com
- |-----------hello
- |--------------Hello.java(D:\demo\src\main\java\com\hello\Hello.java)
- |------resources
- |----test
- |------java
- |------resources
- |--target
- |----classes
- |-------com
- |---------hello
- |-------------Hello.class(D:\demo\target\classes\com\hello\Hello.java)
- |----hello-1.0.0-SNAPSHOT.jar(D:\demo\target\hello-1.0.0-SNAPSHOT.jar)
- |--pom.xml(D:\demo\pom.xml)
6、Maven的優缺點
優點:約定優於配置減少的重複構建步驟
缺點:約定優於配置構建靈活性下降了