一、爲什麼使用Maven這樣的構建工具【why】
① 一個項目就是一個工程
如果項目非常龐大,就不適合使用package來劃分模塊,最好是每一個模塊對應一個工程,利於分工協作。藉助於maven就可以將一個項目拆分成多個工程
② 項目中使用jar包,需要“複製”、“粘貼”項目的lib中
同樣的jar包重複的出現在不同的項目工程中,你需要做不停的複製粘貼的重複工作。藉助於maven,可以將jar包保存在“倉庫”中,不管在哪個項目只要使用引用即可就行。
③ jar包需要的時候每次都要自己準備好或到官網下載
藉助於maven我們可以使用統一的規範方式下載jar包,規範
④ jar包版本不一致的風險
不同的項目在使用jar包的時候,有可能會導致各個項目的jar包版本不一致,導致未執行錯誤。藉助於maven,所有的jar包都放在“倉庫”中,所有的項目都使用倉庫的一份jar包。
⑤ 一個jar包依賴其他的jar包需要自己手動的加入到項目中
FileUpload組件->IO組件,commons-fileupload-1.3.jar依賴於commons-io-2.0.1.jar
極大的浪費了我們導入包的時間成本,也極大的增加了學習成本。藉助於maven,它會自動的將依賴的jar包導入進來。
二、maven是什麼【what】
① maven是一款服務於java平臺的自動化構建工具
make->Ant->Maven->Gradle
名字叫法:我們可以叫妹文也可以叫麥文,但是沒有叫媽文的。
② 構建
構建定義:把動態的Web工程經過編譯得到的編譯結果部署到服務器上的整個過程。
編譯:java源文件[.java]->編譯->Classz字節碼文件[.class]
部署:最終在sevlet容器中部署的不是動態web工程,而是編譯後的文件
③ 構建的各個環節
- 清理clean:將以前編譯得到的舊文件class字節碼文件刪除
-
編譯compile:將java源程序編譯成class字節碼文件
-
測試test:自動測試,自動調用junit程序
-
報告report:測試程序執行的結果
-
打包package:動態Web工程打War包,java工程打jar包
-
安裝install:Maven特定的概念-----將打包得到的文件複製到“倉庫”中的指定位置
-
部署deploy:將動態Web工程生成的war包複製到Servlet容器下,使其可以運行
三、安裝maven
① 當前系統是否配置JAVA_HOME的環境變量
② 下載maven,解壓maven放在一個非中文無空格的路徑下
③ 配置maven的相關環境變量
-
在環境變量增加M2_HOME,路徑是maven解壓後的根目錄
-
在環境變量裏的path中增加maven/bin的目錄
④ 驗證:maven -v 查看maven版本
看到版本信息,恭喜你已經OK了。
四、第一個maven
① 創建約定的目錄結構(maven工程必須按照約定的目錄結構創建)
我們按照上面的文件夾目錄結構手動創建一下,不用任何IDE環境(手動的其實最有助於我們理解maven)
文件內容如下
在src/main/java/com/hzg/maven目錄下新建文件Hello.java,內容如下
package com.hzg.maven;
public class Hello {
public String sayHello(String name){
return "Hello "+name+"!";
}
}
POM文件內容:
<?xml version="1.0" ?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hzg.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Hello</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
② 常用maven命令
-
mvn clean:清理
-
mvn compile:編譯主程序
-
mvn test-compile:編譯測試程序
-
mvn test:執行測試
-
mvn package:打包
-
mvn install:安裝
執行maven命令必須進入到pom.xml的目錄中進行執行
進入到項目的pom.xml目錄之後,就可以執行啦。
1、運行 mvn compile
OK,運行完畢,你在pom.xml配置的依賴的包已經導入到倉庫了,問題來了,倉庫默認的位置在哪?
倉庫的默認位置:c:\Usrs[登錄當前系統的用戶名].m2\repository
剛纔執行完compile之後,之前的文件夾發生了變化
我們發現Hello項目裏裏多了一個target文件夾。文件夾的內容爲:
發現target裏主要存放的就是編譯後的字節碼文件
2、運行mvn test-compile,target文件夾下面除了classes之外多了test-classes文件夾
3、運行mvn package,target文件夾下面又多了一個打好的jar包
4、運行mvn clean,發現整個target文件夾都沒了。又回到了編譯之前我們手動創建的文件夾