Maven入門
1.1 介紹
Maven是一個採用純Java編寫的開源項目管理工具,Maven採用了一種被稱之爲Project Object Model(POM)概念來管理項目,所有的項目配置信息都被定義在一個叫做POM.xml的文件中,通過該文件Maven可以管理項目的整個生命週期,包括清除、編譯、測試,報告、打包,部署等好處:
節省程序員的時間與精力,開發人員主要任務是關注商業邏輯並實現它,而不是把時間浪費在學習如何在不同的環境中去依賴jar包,項目部署等。1.2
Maven能夠做什麼
1 Jar的聲明式依賴性管理
2 項目自動構建1.3 Maven 目錄分析
bin: 含有mvn運行的腳本
boot: 含有plexus-classworlds類加載器框架
conf: 含有settings.xml配置文件
lib: 含有Maven運行時所需要的java類庫
Settings.xml中默認的用戶庫: ${user.home}/.m2/repository
Maven默認倉庫下載地址: maven 的lib目錄下 maven-model-builder-3.0.4.jar的pom.xml中1.4 第一個Maven演示
項目目錄結構:
Hello
–src
—–main
———-java –用來存放Java文件
———-resources –用來存放資源文件
—–test
———java –用來存放測試的Java文件
———resources
–target –項目輸出位置,編譯完畢後自動生成
–pom.xml – 項目對象模型的描述 ,它是maven配置的核心- 4.1 建立pom.xml
<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">
<!-- 當前pom的版本號 -->
<modelVersion>4.0.0</modelVersion>
<!—grounpId, artifactId, version用來定義打包文件座標-->
<!-- groupId:當前項目所在的組;組名一般是關的包名 當前jar所屬的命名空間 -->
<groupId>cn.it.maven</groupId>
<!-- 當前項目模塊名稱 -->
<artifactId>Hello</artifactId>
<!-- 當前項目的版本, SNAPSHOT鏡像版,一般用於開發等不穩定 版本 -->
<version>0.0.1-SNAPSHOT</version>
<!-- 當前模塊需要依賴的相關jar包,也稱爲依賴管理, 所有被依賴的包都是通過"座標"定位的 -->
<dependencies>
<!-- 需要依賴junit 通過 groupId+artifactId+version來查找,如果本地沒有則到中央倉庫下載 -->
<dependency>
<!-- 當前jar所屬的命名空間 -->
<groupId>junit</groupId>
<!-- 依賴的項目模塊的名稱 -->
<artifactId>junit</artifactId>
<!-- 依賴的版本號 -->
<version>4.9</version>
<!-- 依賴的範圍, 有 test compile privlege -->
<scope>test</scope>
</dependency>
1.4.2 創建Java類與測試類
- 在src/main/java/cn/it/maven目錄下新建文件Hello.java
package cn.it.maven;
public class Hello {
public String sayHello(String name){
return "Hello "+name+"!";
}
}
- 在/src/test/java/cn/it/maven目錄下新建測試文件HelloTest.java
package cn.it.maven;
import org.junit.Test;
import static junit.framework.Assert.*;
public class HelloTest {
@Test
public void testHello(){
Hello hello = new Hello();
String results = hello.sayHello("litingwei");
assertEquals("Hello litingwei!",results);
}
}
1.5. 命令測試
打開cmd命令行, 進入Hello項目根目錄執行mvn compile命令, 查看根目錄變化
cmd 中繼續錄入mvn clean命令,然後再次查看根目錄變化
cmd 中錄入 mvn clean compile命令, 查看根目錄變化
cmd 中錄入 mvn clean test命令,查看根目錄變化
cmd 中錄入 mvn clean package命令,查看根目錄變化 打包放在 項目下邊
cmd 中錄入 mvn install : 安裝,把項目的jar包安裝到 本地倉庫 扔到倉庫1.6Maven核心概念
1.6.1 Maven插件
Maven的核心僅僅定義了抽象的生命週期,具體的任務都是交由插件完成的每個插件都能實現多個功能,每個功能就是一個插件目標
Maven的生命週期與插件目標相互綁定,以完成某個具體的構建任務, Maven的插件在: .m2\repository\org\apache\maven\plugins (也可以更改目錄)1.6.2 Maven座標
- groupId:定義當前Maven項目組 (實際對應JAVA的包的結構,有些跟公司名稱相關的項目)
- artifactId:定義實際項目中的一個模塊(項目的唯一的標識符,實際對應項目的名稱,就是項目根目錄的名稱)
- version:定義當前項目的當前版本1.6.3 Maven倉庫 - 何爲Maven倉庫: 用來統一存儲所有Maven共享構建的位置是倉庫 - Maven配置jar或其它包的路徑爲 : groupId/artifactId/version - 本地倉庫(~/.m2/repository/):每個用戶只有一個本地倉庫 - 中央倉庫(Maven默認的遠程倉庫):Maven默認的遠程倉庫下載地址爲:http://repo1.maven.org/maven2 - 私服:是一種特殊的遠程倉庫, 它是架設在局域網內的倉庫, 主要是爲了團隊協作開發