Maven閱讀之坐標(biāo)與依賴

Maven坐標(biāo)

像數(shù)學(xué)中橫坐標(biāo)簸喂,縱坐標(biāo)一樣块差,兩個坐標(biāo)確定一個點(diǎn)侵续,甚至是三維的,三點(diǎn)確定一個點(diǎn)憨闰,Maven也有相應(yīng)的定義規(guī)則:任何一個構(gòu)件在Maven中都有唯一標(biāo)識状蜗,Maven坐標(biāo)元素有g(shù)roupId,artifactId,version,packaging,classifier,當(dāng)我們提供正確的坐標(biāo)鹉动,我們就能得到對應(yīng)的構(gòu)件轧坎。

坐標(biāo)定義

groupId:?定義了當(dāng)前Maven項(xiàng)目隸屬的實(shí)際項(xiàng)目。在實(shí)際運(yùn)用中训裆,一個組織中有幾個項(xiàng)目也很正常眶根,這種情況下,groupId應(yīng)該定義到模塊級別边琉。它的表示方式跟java包名表示方式類似属百,通常與域名反轉(zhuǎn)一一對應(yīng),如公司apple公司变姨,banana項(xiàng)目族扰,groupId則變現(xiàn)為com.apple.banana

artifactId:?定義了實(shí)際項(xiàng)目中的一個Maven項(xiàng)目或者模塊,書中推薦做法是定欧,以實(shí)際項(xiàng)目名稱作為前綴渔呵,默認(rèn)情況下,Maven生成的構(gòu)件砍鸠,會以artifactId開頭扩氢,如nexus-indexer-2.0.jar,這樣命名就能夠容易區(qū)分開來了爷辱。

version:?表示當(dāng)前項(xiàng)目的版本

packaging:?表示項(xiàng)目的打包的方式录豺,默認(rèn)為jar

classifier:?該元素是用來幫助定義構(gòu)建輸出的一些附屬構(gòu)件,附屬構(gòu)件與主構(gòu)件對應(yīng)饭弓,如上面的nexus-indexer-2.0.jar双饥,項(xiàng)目可能通過一些插件生成nexus-indexer-2.0-javadoc.jar這樣的一些附屬構(gòu)件,注意不能直接定義項(xiàng)目的classifier弟断,因?yàn)楦綄贅?gòu)件不是項(xiàng)目默認(rèn)生成的咏花,而是附加的插件幫助生成。

Maven依賴

<?xml version="1.0"?>

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"

? ? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

? <modelVersion>4.0.0</modelVersion>

? <parent>

? ? <groupId>com.fbb</groupId>

? ? <artifactId>fbbParent</artifactId>

? ? <version>1.0</version>

? </parent>

? <groupId>com.fbb</groupId>

? <artifactId>fbb-admin</artifactId>

? <version>1.0</version>

? <packaging>war</packaging>

? <name>fbb-admin Maven Webapp</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>

? ? </dependency>

? ? <dependency>

? ? ? ? <groupId>com.fbb</groupId>

? ? ? ? <artifactId>fbb-web</artifactId>

? ? ? ? <version>1.0</version>

? ? </dependency>

? ? <dependency>

? ? ? ? <groupId>com.fbb</groupId>

? ? ? ? <artifactId>fbb-service</artifactId>

? ? ? ? <version>1.0</version>

? ? </dependency>

? </dependencies>

? <build>

? ? <finalName>fbb-admin</finalName>

? ? <plugins>

? ? ? ? <plugin>

? ? ? ? ? ? <artifactId>maven-war-plugin</artifactId>

? ? ? ? ? ? <version>2.5</version>

? ? ? ? ? ? <configuration>

? ? ? ? ? ? ? ? <warSourceExcludes>node_modules\**</warSourceExcludes>?

? ? ? ? ? ? </configuration>

? ? ? ? </plugin>

? ? </plugins>

? </build>

</project>

上面的pom.xml文件阀趴,是一個項(xiàng)目的總體定義昏翰,其中?為項(xiàng)目父標(biāo)簽苍匆,groupId,artifactId,version棚菊,packaging锉桑,name,url等元素定義了fbb-admin這個項(xiàng)目的基本信息窍株,標(biāo)簽標(biāo)示本項(xiàng)目的依賴,通過項(xiàng)目的依賴關(guān)系定義攻柠,引進(jìn)項(xiàng)目的依賴球订。

groupId,artifactId,version:?依賴的基本坐標(biāo)瑰钮,項(xiàng)目依靠坐標(biāo)才能找到依賴冒滩。

type:?依賴的類型,默認(rèn)為jar

scope:?打包的范圍浪谴,比如test开睡,表示測試時候會編譯該代碼。

optional苟耻,以及exclusions標(biāo)簽:?一個標(biāo)記依賴是否可選篇恒,一個表示用來排除傳遞性依賴。

依賴范圍

在實(shí)際項(xiàng)目中凶杖,編譯主項(xiàng)目代碼是一套classpath胁艰,編譯和測試又是另外一套classpath,實(shí)際項(xiàng)目運(yùn)行的時候又是另外一套classpath智蝠。依賴范圍也就是上面講到的標(biāo)簽來進(jìn)行控制腾么。

compile:?編譯依賴范圍,默認(rèn)使用此范圍杈湾,此范圍下三套classpath都有效

test:?測試依賴范圍解虱,只對測試classpath有效。在編譯主代碼或者運(yùn)行項(xiàng)目的時候無法使用此類依賴漆撞。

provided:?已提供依賴范圍殴泰,對編譯和測試的classpath有效。典型例子叫挟,servlet-api運(yùn)行時容器已經(jīng)提供艰匙,所以不需要重復(fù)引進(jìn)此依賴

runtime:?運(yùn)行時依賴范圍,對測試和運(yùn)行classpath有效抹恳,編譯主代碼無效员凝。

system:?系統(tǒng)依賴范圍,和provided的范圍一樣奋献,但是使用此依賴時必須通過systemPath元素顯示地指定依賴文件的路徑健霹,由于此類依賴不是通過Maven倉庫解析旺上,而且往往與本機(jī)系統(tǒng)綁定,需要謹(jǐn)慎使用糖埋。

Maven通過一系列的坐標(biāo)來確定唯一的項(xiàng)目位置宣吱,通過依賴坐標(biāo),引進(jìn)項(xiàng)目之間的依賴關(guān)系瞳别。以目前自己的見解征候,各個開發(fā)人員公用一套pom文件,統(tǒng)一了開發(fā)的版本祟敛,不會出現(xiàn)因?yàn)槟硞€依賴的接口因?yàn)榘姹镜淖兏霈F(xiàn)不兼容問題疤坝,使用Maven更好地去幫助我們管理好我們的項(xiàng)目倉庫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馆铁,一起剝皮案震驚了整個濱河市跑揉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌埠巨,老刑警劉巖历谍,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辣垒,居然都是意外死亡望侈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門勋桶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甜无,“玉大人,你說我怎么就攤上這事哥遮∑袂穑” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵眠饮,是天一觀的道長奥帘。 經(jīng)常有香客問我,道長仪召,這世上最難降的妖魔是什么寨蹋? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮扔茅,結(jié)果婚禮上已旧,老公的妹妹穿的比我還像新娘。我一直安慰自己召娜,他們只是感情好运褪,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般秸讹。 火紅的嫁衣襯著肌膚如雪檀咙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天璃诀,我揣著相機(jī)與錄音弧可,去河邊找鬼。 笑死劣欢,一個胖子當(dāng)著我的面吹牛棕诵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凿将,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼年鸳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丸相?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤彼棍,失蹤者是張志新(化名)和其女友劉穎灭忠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體座硕,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弛作,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了华匾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片映琳。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蜘拉,靈堂內(nèi)的尸體忽然破棺而出萨西,到底是詐尸還是另有隱情,我是刑警寧澤旭旭,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布谎脯,位于F島的核電站,受9級特大地震影響持寄,放射性物質(zhì)發(fā)生泄漏源梭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一稍味、第九天 我趴在偏房一處隱蔽的房頂上張望废麻。 院中可真熱鬧,春花似錦模庐、人聲如沸烛愧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屑彻。三九已至验庙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間社牲,已是汗流浹背粪薛。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搏恤,地道東北人违寿。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像熟空,于是被迫代替她去往敵國和親藤巢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

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

  • |-1-更新內(nèi)容[6.從倉庫解析依賴的機(jī)制(重要)] 1Maven倉庫作用 倉庫用來存儲所有項(xiàng)目使用到構(gòu)件息罗,在ma...
    zlcook閱讀 6,070評論 0 25
  • 1.POM文件 modelVersion:POM 模型的版本 groupId:項(xiàng)目屬于哪...
    mecury閱讀 993評論 0 0
  • Maven的基本了解 什么是Maven掂咒? Maven就是Apache下的一個開源項(xiàng)目。它是用純java開發(fā)的迈喉。是一...
    Bcome閱讀 2,831評論 0 7
  • maven項(xiàng)目中需要使用到其它依賴時绍刮,則需要在pom.xml中配置<dependency>元素也就是依賴聲明,這樣...
    zlcook閱讀 1,827評論 1 3
  • 一挨摸、maven的兩個作用 項(xiàng)目自動化構(gòu)建孩革,通過命令行就可以完成整個項(xiàng)目構(gòu)建過程,不需要我們手動地進(jìn)行項(xiàng)目構(gòu)建 管理...
    lifeline張閱讀 851評論 0 1