使用Maven構(gòu)建Java項目(轉(zhuǎn))

Maven 是基于項目對象模型「POM」,可以通過一小段描述信息來管理項目的構(gòu)建辩恼、報告和文檔的軟件項目管理工具。本文總結(jié)了 Maven 的基本用法谓形。

1. Maven 基本配置

1.1 環(huán)境變量

環(huán)境變量中添加「M2_HOME」為 maven 主目錄

在 path 中添加「;%M2_HOME%\bin」

1.2 使用 Maven 阿里云中央倉庫

修改 Maven 根目錄下 conf 文件夾中的 setting.xml 文件灶伊,內(nèi)容如下:

<mirrors>
  <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
  </mirror>
</mirrors>

2. 創(chuàng)建基于 Maven 的 Java 項目

2.1 使用命令行創(chuàng)建

Maven 使用原型「archetype」插件創(chuàng)建工程。要創(chuàng)建一個簡單的 Java 應用寒跳,我們將使用 maven-archetype-quickstart 插件聘萨。

Maven 創(chuàng)建目錄有兩種方式:「archetype 可自動創(chuàng)建目錄骨架」

  • 在 cmd 中直接執(zhí)行「mvn archetype:generate」按照提示進行選擇,選擇如下 Archetype:
943: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)

  • 使用單行命令創(chuàng)建項目童太,命令格式如下:
mvn archetype:generate 
 -DgourpId = 組織名米辐,公司網(wǎng)址的反寫 + 項目名稱
 -DartifactId=項目名-模塊名
 -Dversion=版本號
 -Dpackage=代碼所在的包名

示例如下:

mvn archetype:generate
 -DgroupId=cc.bitky.demo
 -DartifactId=demo-module
 -Dversion=1.0.0-SNAPSHOT
 -Dpackage=cc.bitky.demo.module

2.2 使用InteliJ IDEA 創(chuàng)建

  • 在 InteliJ IDEA 中創(chuàng)建基礎的示例 Maven 項目胸完,依舊選擇:
org.apache.maven.archetypes:maven-archetype-quickstart

如圖所示:

image.png

3. 目錄結(jié)構(gòu)

3.1 Maven 項目的目錄結(jié)構(gòu)

在 Maven 項目的根目錄下,有如下必要的目錄結(jié)構(gòu):

  • src
    • main
      • resources「存放一些資源文件」
      • java
        • package「自定義的包」
    • test
      • resources「存放一些資源文件」
      • java
        • package
  • pom.xml

如下圖所示:

image.png

3.2 項目根目錄下「pom.xml」的典型結(jié)構(gòu):

<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>     <!-->maven版本</-->
  <groupId>cc.bitky.demo</groupId>       <!-->項目的包名</-->
  <artifactId>demo-module</artifactId>   <!-->模塊名</-->
  <version>1.0.0-SNAPSHOT</version>      <!-->版本</-->
  <packaging>jar</packaging>
  <name>demo-module</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <!-- 依賴項 -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
      <!-- 排除依賴傳遞列表 -->
      <exclusions>
        <exclusion></exclusion>
      </exclusions>
    </dependency>
  </dependencies>
  <!-- 依賴的管理翘贮,一般定義在父模塊中赊窥,由子模塊去繼承 -->
  <dependencyManagement>
    <dependencies>
      <dependency></dependency>
    </dependencies>
  </dependencyManagement>
  <!-- 對構(gòu)建行為提供相應的支持 -->
  <build>
    <!-- 插件列表 -->
    <plugins>
      <plugin>
        <!-- 指定坐標 -->
        <groupId></groupId>
        <artifactId></artifactId>
        <version></version>
      </plugin>
    </plugins>
  </build>
  <!-- 一般在子模塊中指定所繼承的父模塊 -->
  <parent></parent>
  <!-- 模塊列表 -->
  <modules>
    <module></module>
  </modules>
</project>

4. Maven 操作

4.1 構(gòu)建命令

  • mvn -v 版本。
  • mvn compile 編譯狸页。
  • mvn test 測試锨能。
  • mvn package 打包。
  • mvn clean 清除maven生成的target目錄芍耘。
  • mvn install 將生成的jar安裝到本地倉庫中址遇。
  • mvn compile: 編譯主程序源代碼,不會編譯test目錄的源代碼斋竞。第一次運行時倔约,會下載相關的依賴包,可能會比較費時
  • mvn test: 運行應用程序中的單元測試坝初,會生成 target 文件夾:
    • 主程序編譯的字節(jié)碼文件在 classes 下面
    • 測試程序放在 test-classes 下
    • 所生成的測試報告放在 surefire-reports 文件夾下
  • mvn package 會在target目錄下生成 Jar 包浸剩,如「maven01-model-0.0.1SNAPSHPT.jar」

4.2 生命周期

Maven的生命周期大概如下狞贱,這幾個命令對應了一個項目的完整的構(gòu)建過程落塑,這幾個步驟對應的都有插件來完成:

  • clean 「清理」
  • compile 「編譯」
  • test 「測試」
  • package 「打包」
  • install「安裝到本地庫」

Maven的生命周期分為三個獨立的生命周期(每一個生命周期有分為若干個階段,其中defaul是最核心的一個):

  1. clean「清理項目」
  2. default「構(gòu)建項目」
  3. site「生成項目的站點」

4.2.1 clean「清理項目」

  • pre-clean 「執(zhí)行清理前的工作」
  • clean「清理上一次構(gòu)建生成的所有文件」
  • post-clean「執(zhí)行清理后的文件」

4.2.2 default「構(gòu)建項目」(最核心)

  • compile 「編譯」
  • test 「測試」
  • package 「打包」
  • install「安裝到本地庫」

4.2.3 site「生成項目站點」

  • pre-site「在生成項目站點之前要完成的工作」
  • site「生成項目的站點文檔」
  • post-site「在生成項目站點后要完成的工作」
  • site-deploy「發(fā)布生成的站點到服務器上」

注意

  • 每個獨立的生命周期钝满,只需執(zhí)行其中一個命令畦木,此時會從該生命周期的開始命令順序執(zhí)行到該命令袖扛。
  • Maven的生命周期對應的命令是順序執(zhí)行的,如果沒有人為的順序的一個個執(zhí)行十籍,那么Maven會默認的自動運行蛆封。
  • 如執(zhí)行「mvn clean test」,則此時會順序執(zhí)行「pre-clean clean post-clean compile test」
  • 如執(zhí)行「mvn test」,則此時會順序執(zhí)行「compile test」

5. 參考資料

  1. Maven 教程 - 「極客學院 Wiki」
  2. 項目管理利器 — maven「慕課網(wǎng)」

作者:雪中亮
鏈接:http://www.reibang.com/p/ccb836969afd
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處勾栗。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惨篱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子围俘,更是在濱河造成了極大的恐慌砸讳,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件界牡,死亡現(xiàn)場離奇詭異簿寂,居然都是意外死亡,警方通過查閱死者的電腦和手機宿亡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門常遂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挽荠,你說我怎么就攤上這事克胳∑郊ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵漠另,是天一觀的道長捏雌。 經(jīng)常有香客問我,道長酗钞,這世上最難降的妖魔是什么腹忽? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮砚作,結(jié)果婚禮上窘奏,老公的妹妹穿的比我還像新娘。我一直安慰自己葫录,他們只是感情好着裹,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著米同,像睡著了一般骇扇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上面粮,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天少孝,我揣著相機與錄音,去河邊找鬼熬苍。 笑死稍走,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的柴底。 我是一名探鬼主播婿脸,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼柄驻!你這毒婦竟也來了狐树?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤鸿脓,失蹤者是張志新(化名)和其女友劉穎抑钟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體野哭,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡味赃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了虐拓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡傲武,死狀恐怖蓉驹,靈堂內(nèi)的尸體忽然破棺而出城榛,到底是詐尸還是另有隱情,我是刑警寧澤态兴,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布狠持,位于F島的核電站,受9級特大地震影響瞻润,放射性物質(zhì)發(fā)生泄漏喘垂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一绍撞、第九天 我趴在偏房一處隱蔽的房頂上張望正勒。 院中可真熱鬧,春花似錦傻铣、人聲如沸章贞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸭限。三九已至,卻和暖如春两踏,著一層夾襖步出監(jiān)牢的瞬間败京,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工梦染, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赡麦,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓弓坞,卻偏偏與公主長得像隧甚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子渡冻,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

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