Java項目構(gòu)建-Maven

例子:HelloWorld

創(chuàng)建

用mvn插件archetype創(chuàng)建helloworld項目:

egao$?mvn archetype:generate?-DgroupId=com.ellie.helloworld -DartifactId=helloworld -Dpackage=com.ellie.helloworld -Dversion=1.0-SNAPSHOT

項目的默認目錄結(jié)構(gòu)如下(除非特別定制还绘,maven項目都遵循這種慣例):

egao$ cd helloworld

egao$ ll

total 0

-rw-r--r--? 1 egao? staff? 762 Dec 28 10:24?pom.xml

drwxr-xr-x? 4 egao? staff? 136 Dec 28 10:24?src

編譯打包

"mvn package"捐晶,將執(zhí)行mvn默認生命周期中從開始到package 階段(包括default-resources瓷叫,default-compile,default-testResources逢倍,default-testCompile,default-test景图,default-jar)的所有任務较雕。

egao$ mvn package

[INFO] Scanning for projects...

...

[INFO] Building helloworld 1.0-SNAPSHOT

...

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---

...

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---

...

[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ helloworld ---

...

[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ helloworld ---

...

[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ helloworld ---

...

[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ helloworld ---

...

[INFO] BUILD SUCCESS

...


構(gòu)建后會生成target目錄,class文件和jar文件位于該目錄:

egao$ ll

total 8

-rw-r--r-- 1 egao staff 762 Dec 28 10:24 pom.xml

drwxr-xr-x 4 egao staff 136 Dec 28 10:24 src

drwxr-xr-x 8 egao staff 272 Dec 28 14:08 target

egao$ java -cp target/helloworld-1.0-SNAPSHOT.jar com.ellie.helloworld.App

Hello World!

Maven概念解析

POM

項目坐標:groupId+artifactId+version+packaging

子項目會繼承父項目的pom症歇。所有pom都繼承自一個super pom郎笆。

通過mvn help:effective-pom可以查看構(gòu)建時真正使用的pom。

插件和生命周期

maven控制構(gòu)建過程(生命周期)忘晤,構(gòu)建過程的每個具體步驟是交給插件執(zhí)行的宛蚓。

以HelloWorld為例,它使用默認的生命周期设塔。

process-resources 階段:resources:resources

compile 階段:compiler:compile

process-classes 階段:(默認無目標)

process-test-resources 階段:resources:testResources

test-compile 階段:compiler:testCompile

test 階段:surefire:test

prepare-package 階段:(默認無目標)

package 階段:jar:jar

在HelloWorld的構(gòu)建過程中凄吏,maven-compiler-plugin這個插件使用了兩次:編譯業(yè)務代碼(compile階段,compiler:compile)闰蛔,編譯測試代碼(test-compile階段痕钢,compiler:testCompile)。

依賴管理

依賴傳遞:項目依賴A.jar, A.jar又依賴B.jar序六,項目只需定義對A的依賴任连。maven會根據(jù)A的pom文件自動下載B

依賴的scope:決定了依賴關系的適用范圍。默認是compile例诀,任何時候都會被包含在 classpath 中随抠,包括打包。test scope只有在test階段才會起作用繁涂。provided scope在打包時不起作用拱她,它表示運行環(huán)境會提供這個依賴的jar

public的maven項目可以從默認的maven庫下載:http://repo.maven.org/maven2

maven下載的jar在本地默認存放在~/.m2/repository中。

maven 查找需要的 jar 文件時扔罪,會先在本地找秉沼,然后去遠程庫找。

復雜的例子:多模塊web項目

References

Apache Maven

Apache Maven 入門篇 ( 上 )

Apache Maven 入門篇(下)

Maven Archetype的設計和使用

Apache Ant 教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矿酵,一起剝皮案震驚了整個濱河市唬复,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坏瘩,老刑警劉巖盅抚,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異倔矾,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門哪自,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丰包,“玉大人,你說我怎么就攤上這事壤巷∫乇耄” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵胧华,是天一觀的道長寄症。 經(jīng)常有香客問我,道長矩动,這世上最難降的妖魔是什么有巧? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮悲没,結(jié)果婚禮上篮迎,老公的妹妹穿的比我還像新娘。我一直安慰自己示姿,他們只是感情好甜橱,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著栈戳,像睡著了一般岂傲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上子檀,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天镊掖,我揣著相機與錄音,去河邊找鬼命锄。 笑死堰乔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的脐恩。 我是一名探鬼主播镐侯,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驶冒!你這毒婦竟也來了苟翻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤骗污,失蹤者是張志新(化名)和其女友劉穎崇猫,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體需忿,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡诅炉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年蜡歹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涕烧。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡月而,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出议纯,到底是詐尸還是另有隱情父款,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布瞻凤,位于F島的核電站憨攒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏阀参。R本人自食惡果不足惜肝集,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望结笨。 院中可真熱鬧包晰,春花似錦、人聲如沸炕吸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赫模。三九已至树肃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瀑罗,已是汗流浹背胸嘴。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留斩祭,地道東北人劣像。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像摧玫,于是被迫代替她去往敵國和親耳奕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

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