Maven - 簡介

Maven簡介

Maven是一個強大的Java項目構(gòu)建工具。由于Maven是用Java開發(fā)的茴肥,因此Maven被更多的用于Java項目中肢娘。
構(gòu)建工具是將軟件項目構(gòu)建相關(guān)的過程自動化的工具。構(gòu)建一個軟件項目通常包含以下一個或多個過程:

  • 生成源碼(如果項目使用自動生成源碼)塌碌;

  • 從源碼生成項目文檔渊胸;

  • 編譯源碼;

  • 將編譯后的代碼打包成JAR文件或者ZIP文件台妆;

  • 將打包好的代碼安裝到服務(wù)器翎猛、倉庫或者其它的地方;
    Maven 使用約定而不是配置接剩,意味著開發(fā)者不需要再自己創(chuàng)建構(gòu)建過程切厘。
    開發(fā)者不需要再關(guān)心每一個配置細節(jié)。Maven 為工程提供了合理的默認(rèn)行為懊缺。當(dāng)創(chuàng)建 Maven 工程時疫稿,Maven 會創(chuàng)建默認(rèn)的工程結(jié)構(gòu)。開發(fā)者只需要合理的放置文件鹃两,而在 pom.xml 中不再需要定義任何配置遗座。

  • 項目對象模型(POM): POM 是 Maven 2 中的里程碑式的模型。該模型的一部分已經(jīng)構(gòu)建到 Maven 引擎(被親切地稱為反應(yīng)堆 )中俊扳,其余部分則通過一個名叫 pom.xml 的基于 XML 的元數(shù)據(jù)文件來聲明途蒋。

  • 依賴項管理模型: Maven 對如何管理項目的依賴項很在行。依賴項管理是一片灰色地帶馋记,典型的構(gòu)建-管理工具和系統(tǒng)都未明確涉及号坡。Maven 2 構(gòu)建了 Maven 依賴項管理模型懊烤,該模型能夠適應(yīng)大多數(shù)需求。這個模型被證明是有效而高產(chǎn)的模型筋帖,目前奸晴,主要的開源項目都部署了該模型。

  • 構(gòu)建生命周期和階段:和 POM 相關(guān)的概念是構(gòu)建生命周期 和階段日麸。這是 Maven 2 的內(nèi)嵌概念模型和現(xiàn)實物理世界之間的接口寄啼。使用 Maven 時,工作主要是通過插件來執(zhí)行的代箭。在構(gòu)建周期中墩划,Maven 2 通過遵循一系列定義好的階段,將這些插件協(xié)調(diào)起來嗡综。
    下面的表格展示了工程源碼文件乙帮、資源文件的默認(rèn)配置,和其他一些配置极景。假定 ${basedir} 表示工程目錄:

    | 配置項 | 默認(rèn)值 |
    | ------------- |:-------------:|
    | resources | ${basedir}/src/main/resources |
    | Tests | ${basedir}/src/test |
    | Complied byte code | ${basedir}/target |
    | distributable JAR | ${basedir}/target/classes |
    為了構(gòu)建工程察净,Maven 為開發(fā)者提供了選項來配置生命周期目標(biāo)和工程依賴(依賴于 Maven 的插件擴展功能和默認(rèn)的約定)。大部分的工程管理和構(gòu)建相關(guān)的任務(wù)是由 Maven 插件完成的盼樟。
    開發(fā)人員不需要了解每個插件是如何工作的氢卡,就能夠構(gòu)建任何給定的 Maven 工程。

Maven - 環(huán)境配置

Maven 是一個基于 Java 的工具晨缴,所以要做的第一件事情就是安裝 JDK译秦。

系統(tǒng)要求

項目 要求
JDK Maven 3.3 要求 JDK 1.7 或以上
Maven 3.2 要求 JDK 1.6 或以上
Maven 3.0/3.1 要求 JDK 1.5 或以上
內(nèi)存 沒有最低要求
磁盤 Maven 自身安裝需要大約 10 MB 空間。
除此之外击碗,額外的磁盤空間將用于你的本地 Maven 倉庫筑悴。
你本地倉庫的大小取決于使用情況,但預(yù)期至少 500 MB稍途。
操作系統(tǒng) 沒有最低要求

步驟 1:檢查 Java 安裝

操作系統(tǒng) 任務(wù) 命令
Windows 打開命令控制臺 c:> java -version
Linux 打開命令終端 $ java -version
Mac 打開終端 machine:~ joseph$ java -version

現(xiàn)在打開控制臺阁吝,執(zhí)行下面的 java 命令。

操作系統(tǒng) 任務(wù) 命令
Windows 打開命令控制臺 c:> java -version
Linux 打開命令終端 $ java -version
Mac 打開終端 machine:~ joseph$ java -version
操作系統(tǒng) 輸出
Windows java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)
Linux java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)
Mac java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)

步驟 2:設(shè)置 Java 環(huán)境

步驟 3:下載 Maven 文件

從以下網(wǎng)址下載 Maven 3.2.5:http://maven.apache.org/download.html

步驟 4:解壓 Maven 文件

操作系統(tǒng) 位置 (根據(jù)你的安裝位置而定)
Windows C:\Program Files\Apache Software Foundation\apache-maven-3.2.5
Linux /usr/local/apache-maven
Mac /usr/local/apache-maven

解壓文件到你想要的位置來安裝 Maven 3.2.5械拍,你會得到 apache-maven-3.2.5 子目錄求摇。

操作系統(tǒng) 位置 (根據(jù)你的安裝位置而定)
Windows C:\Program Files\Apache Software Foundation\apache-maven-3.2.5
Linux /usr/local/apache-maven
Mac /usr/local/apache-maven

步驟 5:設(shè)置 Maven 環(huán)境變量

操作系統(tǒng) 輸出
Windows 使用系統(tǒng)屬性設(shè)置環(huán)境變量。
M2_HOME=C:\Program Files\Apache Software Foundation\apache-maven-3.2.5
M2=%M2_HOME%\bin
MAVEN_OPTS=-Xms256m -Xmx512m
Linux 打開命令終端設(shè)置環(huán)境變量殊者。
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export MAVEN_OPTS=-Xms256m -Xmx512m
Mac 打開命令終端設(shè)置環(huán)境變量。
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export MAVEN_OPTS=-Xms256m -Xmx512m

添加 M2_HOME验夯、M2猖吴、MAVEN_OPTS 到環(huán)境變量中。

操作系統(tǒng) 輸出
Windows 使用系統(tǒng)屬性設(shè)置環(huán)境變量挥转。
M2_HOME=C:\Program Files\Apache Software Foundation\apache-maven-3.2.5
M2=%M2_HOME%\bin
MAVEN_OPTS=-Xms256m -Xmx512m
Linux 打開命令終端設(shè)置環(huán)境變量海蔽。
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export MAVEN_OPTS=-Xms256m -Xmx512m
Mac 打開命令終端設(shè)置環(huán)境變量共屈。
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export MAVEN_OPTS=-Xms256m -Xmx512m

步驟 6:添加 Maven bin 目錄到系統(tǒng)路徑中

操作系統(tǒng) 輸出
Windows 添加字符串 “;%M2%” 到系統(tǒng)“Path”變量末尾
Linux export PATH=M2:PATH
Mac export PATH=M2:PATH

步驟 7:驗證 Maven 安裝

操作系統(tǒng) 輸出 命令
Windows 打開命令控制臺 c:> mvn --version
Linux 打開命令終端 $ mvn --version
Mac 打開終端 machine:~ joseph$ mvn --version

現(xiàn)在打開控制臺,執(zhí)行以下 mvn 命令党窜。

操作系統(tǒng) 輸出 命令
Windows 打開命令控制臺 c:> mvn --version
Linux 打開命令終端 $ mvn --version
Mac 打開終端 machine:~ joseph$ mvn --version

Maven - POM

Maven的中心思想是POM文件(項目對象模型)拗引。POM文件是以XML文件的形式表述項目的資源,如源碼幌衣、測試代碼矾削、依賴(用到的外部Jar包)等。POM文件應(yīng)該位于項目的根目錄下豁护。POM 包含了關(guān)于工程和各種配置細節(jié)的信息哼凯,Maven 使用這些信息構(gòu)建工程。
POM文件描述的是構(gòu)建“什么”楚里,而不是“如何”構(gòu)建断部。如何構(gòu)建是取決于Maven的構(gòu)建階段和目標(biāo)。
每一個項目都有一個POM文件班缎。POM文件即pom.xml蝴光,應(yīng)該放在項目的根目錄下。一個項目如果分為多個子項目达址,一般來講蔑祟,父項目有一個POM文件,每一個子項目都有一個POM文件苏携。在這種結(jié)構(gòu)下做瞪,既可以一步構(gòu)建整個項目,也可以各個子項目分開構(gòu)建右冻。
下圖說明了Maven是如何使用POM文件的装蓬,以及POM文件的主要組成部分:

image.png

POM 也包含了目標(biāo)和插件。當(dāng)執(zhí)行一個任務(wù)或者目標(biāo)時纱扭,Maven 會查找當(dāng)前目錄下的 POM牍帚,從其中讀取所需要的配置信息,然后執(zhí)行目標(biāo)乳蛾。能夠在 POM 中設(shè)置的一些配置如下:

  • project dependencies
  • plugins
  • goals
  • build profiles
  • project version
  • developers
    在創(chuàng)建 POM 之前暗赶,我們首先確定工程組(groupId),及其名稱(artifactId)和版本肃叶,在倉庫中這些屬性是工程的唯一標(biāo)識蹂随。

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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
 </project>

需要說明的是每個工程應(yīng)該只有一個 POM 文件。

  • 所有的 POM 文件需要 project 元素和三個必須的字段:groupId, artifactId,version因惭。
  • 在倉庫中的工程標(biāo)識為 groupId:artifactId:version
  • POM.xml 的根元素是 project岳锁,它有三個主要的子節(jié)點:
節(jié)點 描述
groupId 這是工程組的標(biāo)識。它在一個組織或者項目中通常是唯一的蹦魔。例如激率,一個銀行組織 com.company.bank 擁有所有的和銀行相關(guān)的項目咳燕。
artifactId 這是工程的標(biāo)識。它通常是工程的名稱乒躺。例如招盲,消費者銀行。groupId 和 artifactId 一起定義了 artifact 在倉庫中的位置嘉冒。
version 這是工程的版本號曹货。在 artifact 的倉庫中,它用來區(qū)分不同的版本健爬。例如:com.company.bank:consumer-banking:1.0
com.company.bank:consumer-banking:1.1.

Super POM

所有的Maven pom文件都繼承自一個父pom控乾。如果沒有指定父pom,則該pom文件繼承自根pom娜遵。pom文件的繼承關(guān)系如下圖所示:

image.png

可以讓一個pom文件顯式地繼承另一個pom文件蜕衡。這樣,可以通過修改公共父pom文件的設(shè)置來修改所有子pom文件的設(shè)置设拟。在pom文件的起始處指定父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/xsd/maven-4.0.0.xsd”>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<relativePath>../my-parent</relativePath>

</parent>
<artifactId>my-project</artifactId>

</project>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市纳胧,隨后出現(xiàn)的幾起案子镰吆,更是在濱河造成了極大的恐慌,老刑警劉巖跑慕,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件万皿,死亡現(xiàn)場離奇詭異,居然都是意外死亡核行,警方通過查閱死者的電腦和手機牢硅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芝雪,“玉大人减余,你說我怎么就攤上這事〕拖担” “怎么了位岔?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長堡牡。 經(jīng)常有香客問我抒抬,道長,這世上最難降的妖魔是什么晤柄? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任瞧剖,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抓于。我一直安慰自己,他們只是感情好浇借,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布捉撮。 她就那樣靜靜地躺著,像睡著了一般妇垢。 火紅的嫁衣襯著肌膚如雪巾遭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天闯估,我揣著相機與錄音灼舍,去河邊找鬼。 笑死涨薪,一個胖子當(dāng)著我的面吹牛骑素,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刚夺,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼献丑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侠姑?” 一聲冷哼從身側(cè)響起创橄,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎橄仆,沒想到半個月后镶蹋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體国葬,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年醉蚁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柳畔。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡馍管,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出薪韩,到底是詐尸還是另有隱情确沸,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布俘陷,位于F島的核電站罗捎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拉盾。R本人自食惡果不足惜桨菜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧倒得,春花似錦泻红、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至菩彬,卻和暖如春缠劝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骗灶。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工惨恭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耙旦。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓脱羡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親母廷。 傳聞我的和親對象是個殘疾皇子轻黑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)琴昆,斷路器氓鄙,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評論 6 342
  • 前言什么是 POMQuick Overview POM 常用元素 pom.xml 完整注釋 參考 0 前言 什么是...
    seyvoue閱讀 12,575評論 1 36
  • Maven入門教程 1.1.介紹、環(huán)境配置 1.1.1.Maven介紹 Maven是一個采用純Java編寫的開源項...
    安易學(xué)車閱讀 1,452評論 2 10
  • 一級標(biāo)題 二級標(biāo)題 *傾斜文字**加粗文字-列表第一項-列表第二項
    兔小白在江湖閱讀 96評論 0 0