一亚铁、概述
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
Maven是一個(gè)軟件項(xiàng)目管理的綜合工具褪秀。它基于項(xiàng)目對(duì)象模型(POM)的概念,把所有的項(xiàng)目配置信息都定義在pom.xml文件中谎痢。通過配置文件,Maven可以管理項(xiàng)目的整個(gè)生命周期,包括構(gòu)建榄笙、編譯、測試祷蝌、發(fā)布茅撞、報(bào)告等。
二巨朦、下載和配置
1米丘、下載
從Maven的官網(wǎng)下載與環(huán)境匹配的最新版本壓縮包。下載之后無需安裝糊啡,直接解壓到指定目錄拄查。
2、配置
解壓縮之后棚蓄,需要進(jìn)行環(huán)境變量的設(shè)置堕扶。
3、驗(yàn)證
設(shè)置完環(huán)境變量之后梭依,在命令行輸入命令:mvn -version
驗(yàn)證是否安裝成功稍算。
4、添加本地倉庫
進(jìn)入Maven目錄役拴,打開conf目錄下的settings.xml配置文件糊探,添加本地倉庫。這樣河闰,所有用戶都可以共用這個(gè)倉庫來構(gòu)建項(xiàng)目科平。
三、約定
Maven遵循“約定優(yōu)于配置”的原則進(jìn)行配置姜性。主要有如下約定:
- 源代碼路徑:src/main/java
- 資源文件路徑:src/main/resource
- 測試代碼路徑:src/test
- 編譯后文件路徑:/target/classes
- 可發(fā)布的文件路徑:/target
官網(wǎng)推薦的標(biāo)準(zhǔn)目錄結(jié)構(gòu)
四瞪慧、創(chuàng)建項(xiàng)目
IntelliJ IDEA已經(jīng)整合了Maven到IDE中,可以直接用來創(chuàng)建Maven項(xiàng)目部念。
五弃酌、pom.xml
Maven的核心是pom.xml,Maven通過這個(gè)配置文件完成各種各樣的任務(wù)印机。在實(shí)際項(xiàng)目中矢腻,不必完全理解全部配置項(xiàng)目,可以只關(guān)注主要的配置信息射赛。關(guān)于各配置項(xiàng)目的詳細(xì)定義多柑,可以參照官網(wǎng)的說明。
1楣责、配置文件
<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>
<!-- The Basics -->
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>...</packaging>
<dependencies>...</dependencies>
<parent>...</parent>
<dependencyManagement>...</dependencyManagement>
<modules>...</modules>
<properties>...</properties>
<!-- Build Settings -->
<build>...</build>
<reporting>...</reporting>
<!-- More Project Information -->
<name>...</name>
<description>...</description>
<url>...</url>
<inceptionYear>...</inceptionYear>
<licenses>...</licenses>
<organization>...</organization>
<developers>...</developers>
<contributors>...</contributors>
<!-- Environment Settings -->
<issueManagement>...</issueManagement>
<ciManagement>...</ciManagement>
<mailingLists>...</mailingLists>
<scm>...</scm>
<prerequisites>...</prerequisites>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<distributionManagement>...</distributionManagement>
<profiles>...</profiles>
</project>
2竣灌、基本配置
-
<groupId>
表示組織標(biāo)識(shí) -
<artifactId>
表示項(xiàng)目名稱 -
<version>
表示版本號(hào) -
<packaging>
表示打包的格式 -
<dependencies>
表示依賴關(guān)系 -
<parent>
表示繼承關(guān)系 -
<dependencyManagement>
用于管理依賴信息 -
<modules>
表示聚合關(guān)系 -
<properties>
表示值占位符聂沙,使用${X}訪問,X代表屬性
3初嘹、構(gòu)建設(shè)置
-
<build>
處理聲明項(xiàng)目目錄結(jié)構(gòu)及汉、管理插件等 -
<reporting>
鏡像構(gòu)建元素
4、項(xiàng)目信息
-
<name>
表示項(xiàng)目名稱 -
<description>
表示項(xiàng)目描述 -
<url>
表示項(xiàng)目URL -
<inceptionYear>
表示項(xiàng)目開始年份 -
<licenses>
表示項(xiàng)目licenses -
<organization>
表示項(xiàng)目組織 -
<developers>
表示項(xiàng)目開發(fā)人員 -
<contributors>
表示項(xiàng)目貢獻(xiàn)者
5屯烦、環(huán)境設(shè)置
-
<issueManagement>
定義所用的缺陷跟蹤系統(tǒng) -
<ciManagement>
定義持續(xù)集成構(gòu)建系統(tǒng) -
<mailingLists>
定義郵件列表 -
<scm>
定義軟件配置系統(tǒng) -
<prerequisites>
定義前提條件 -
<repositories>
定義倉庫 -
<pluginRepositories>
定義插件倉庫 -
<distributionManagement>
定義分布式管理系統(tǒng) -
<profiles>
定義相關(guān)設(shè)置
六坷随、生命周期
- validate:驗(yàn)證工程是否正確,所有需要的資源是否可用
- compile:編譯項(xiàng)目的源代碼
- test:使用合適的單元測試框架測試已編譯的源代碼
- package:把已編譯的代碼打包成可發(fā)布的格式
- verify:運(yùn)行所有檢查驻龟,驗(yàn)證包是否有效
- install:把包安裝在本地的倉庫中
- deploy:在集成或者發(fā)布環(huán)境下執(zhí)行温眉,將包拷貝到遠(yuǎn)程倉庫
- clean:清除之前構(gòu)建的artifacts
- site:為項(xiàng)目生成文檔站點(diǎn)
七、常用命令
- mvn archetype:create翁狐,創(chuàng)建Maven項(xiàng)目
- mvn compile类溢,編譯源代碼,在目標(biāo)目錄下生成結(jié)果文件
- mvn test-compile露懒,編譯測試代碼
- mvn test闯冷,運(yùn)行單元測試
- mvn site,生成項(xiàng)目信息站點(diǎn)
- mvn clean懈词,清楚目標(biāo)目錄下生成的結(jié)果文件
- mvn package蛇耀,項(xiàng)目打包
- mvn install,將打包好的包安裝到本地倉庫
- cargo:deploy钦睡,部署到私有服務(wù)器
這些命令可以一起使用蒂窒,但要注意命令的執(zhí)行順序:
clean compile package install