Maven常用一些標(biāo)簽和知識(shí)總結(jié)

當(dāng)前項(xiàng)目的信息

<groupId>:企業(yè)網(wǎng)址反寫+項(xiàng)目名

? <artifactId>:項(xiàng)目名-模塊名

? <version>:版本號(hào)+類型(snapshot快照版本(簡化版本)奠货、alpha內(nèi)測版谜慌、beta公測版蕊退、release穩(wěn)定版、GA正式發(fā)布版)

? <packaging>:打包類型,默認(rèn)是jar夫晌,可以配置成war泣棋、zip胶哲、pom類型。

<name>:當(dāng)前項(xiàng)目名

<url>:項(xiàng)目地址

<description>:項(xiàng)目描述信息

<developers>:開發(fā)者信息

<licenses>:項(xiàng)目許可證信息潭辈,用來發(fā)布時(shí)授予別人使用此項(xiàng)目的權(quán)利

<organization>:組織信息鸯屿,企業(yè)信息

<properties>:屬性值標(biāo)簽,也叫變量標(biāo)簽把敢。



依賴標(biāo)簽

//實(shí)際引用jar包

<dependencies>

? ? <!--一個(gè)依賴包-->

? ? <dependency>

? ? ? <!--通過坐標(biāo)指定依賴包-->

? ? ? ? <groupId>? ? ? ? </groupId>

? ? ? ? <artifactId>? ? ? </artifactId>

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

? ? ? ? <!--可選項(xiàng):依賴范圍寄摆。有六個(gè)可選值:常用compile/provided/test/runtime等-->

? ? ? ? <scope>一個(gè)范圍</scope>

? ? ? ? <!--可選項(xiàng):排除依賴傳遞:即:當(dāng)前項(xiàng)目依賴當(dāng)前配置的依賴包A時(shí),如果這個(gè)依賴包又依賴其他包B修赞,這里可以選擇排除依賴的傳遞性婶恼,不下載導(dǎo)入B-->

? ? ? ? <exclusions>

? ? ? ? ? ? <exclusion>

? ? ? ? ? ? ? <!--被排除的依賴包坐標(biāo)-->

? ? ? ? ? ? ? <groupId> </groupId>

? ? ? ? ? ? ? <artifactId> </artifactId>

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

? ? ? ? ? ? </exclusion>

? ? ? ? </exclusions>

? ? </dependency>

</dependencies>




依賴管理標(biāo)簽:

//版本管理,不引入jar 包

<dependencyManagement>

? ? ? <dependencies>?

? ? ? ? ? ? <dependency>?

? ? ? ? ? ? ? ? <groupId>org.springframework</groupId>?

? ? ? ? ? ? ? ? <artifactId>spring-core</artifactId>?

? ? ? ? ? ? ? ? <version>3.2.7</version>?

? ? ? ? ? ? </dependency>?

? ? </dependencies>?

?</dependencyManagement>




build:項(xiàng)目支持標(biāo)簽,一般用來引入插件

<build>

? ? <plugins>

? ? ? <plugin>

? ? ? ? <!--插件坐標(biāo)-->

? ? ? ? <groupId>? ? ? ? </groupId>

? ? ? ? <artifactId>? ? ? ? </artifactId>

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

? ? ? ? 其他設(shè)置...

? ? ? </plugin>

? ? </plugins>

</build>




構(gòu)建插件

<build>

? ? ? <!--

? ? ? ? ? Maven定制化打包后的包名

? ? ? ? ? Maven默認(rèn)的包名為:<finalName>${project.artifactId}-${project.version}</finalName>

? ? ? ? ? 定制化想要的包名,如加上時(shí)間戳:<finalName>${project.artifactId}-${maven.build.timestamp}</finalName>

? ? ? -->

? ? ? <finalName>myProject</finalName>?

? ? ? <!-- 插件列表 -->

? ? ? <plugins>

? ? ? ? ? <plugin>

? ? ? ? ? ? ? <groupId>org.apache.maven.plugins</groupId>

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

? ? ? ? ? ? ? <version>2.4</version>

? ? ? ? ? ? ? <executions>

? ? ? ? ? ? ? ? ? <execution>

? ? ? ? ? ? ? ? ? ? ? <phase>package</phase>

? ? ? ? ? ? ? ? ? ? ? <goals>

? ? ? ? ? ? ? ? ? ? ? ? ? <goal>jar-no-fork</goal>

? ? ? ? ? ? ? ? ? ? ? </goals>

? ? ? ? ? ? ? ? ? </execution>

? ? ? ? ? ? ? </executions>

? ? ? ? ? </plugin>

? ? ? </plugins>

? ? ? <!-- 插件管理列表勾邦,與dependencyManagement標(biāo)簽作用相似蚣录,管理插件版本號(hào),讓子項(xiàng)目繼承使用 -->

? ? ? <pluginManagement>

? ? ? ? ? <plugins>

? ? ? ? ? ? ? <plugin>

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

? ? ? ? ? ? ? ? ? <!-- 插件擴(kuò)展配置 -->

? ? ? ? ? ? ? ? ? <!-- 更詳細(xì)的例子:http://my.oschina.net/zh119893/blog/276090 -->

? ? ? ? ? ? ? ? ? <configuration>

? ? ? ? ? ? ? ? ? ? ? <!-- 源代碼編譯版本 -->

? ? ? ? ? ? ? ? ? ? ? <source>1.7</source>

? ? ? ? ? ? ? ? ? ? ? <!-- 目標(biāo)平臺(tái)編譯版本 -->

? ? ? ? ? ? ? ? ? ? ? <target>1.7</target>

? ? ? ? ? ? ? ? ? ? ? <!-- 設(shè)置編譯字符集編碼 -->

? ? ? ? ? ? ? ? ? ? ? <encoding>${project.build.sourceEncoding}</encoding>

? ? ? ? ? ? ? ? ? </configuration>

? ? ? ? ? ? ? </plugin>

? ? ? ? ? </plugins>

? ? ? </pluginManagement>

? ? </build>

? </project>




parent:繼承標(biāo)簽检痰,用于繼承父項(xiàng)目包归。

<parent>

? ? <groupId>org.springframework.boot</groupId>

? ? <artifactId>spring-boot-starter-parent</artifactId>

? ? <version>1.5.6.RELEASE</version>

? ? <relativePath/>

</parent>




moudules:聚合標(biāo)簽

用于聚合多個(gè)maven項(xiàng)目,這樣用某指令執(zhí)行這個(gè)pom就會(huì)把聚合的各項(xiàng)目全部執(zhí)行铅歼,同時(shí)處理多個(gè)項(xiàng)目公壤。

<modules>

? ? ? ? <module>a-demo</module>

? ? ? ? <module>b-client</module>

? ? ? ? <module>c-interface</module>

? ? </modules>




依賴沖突與解決

依賴沖突:一個(gè)項(xiàng)目A,通過不同依賴傳遞路徑依賴于X椎椰,若在不同路徑下傳遞過來的X版本不同厦幅,那么A應(yīng)該導(dǎo)入哪個(gè)版本的X包呢?

? ? 沖突解決方案:

? ? 1:如果依賴路徑的長度不同慨飘,則“短路優(yōu)先”:

? ? ? ? A—>B—>C—>D—>E—>X(version 0.0.1)

? ? ? ? A—>F—>X(version 0.0.2)

? ? ? ? 則A依賴于X(version 0.0.2)确憨。

? ? 2:依賴路徑長度相同情況下,則“先聲明優(yōu)先”:

? ? ? ? A—>E—>X(version 0.0.1)

? ? ? ? A—>F—>X(version 0.0.2)

? ? ? ? 則在項(xiàng)目A的<depencies></depencies>中瓤的,E休弃、F那個(gè)在先則A依賴哪條路徑的X。




maven的繼承與聚合(相關(guān)標(biāo)簽上面已列),更多用于模塊化開發(fā)

繼承:

1:創(chuàng)建父maven項(xiàng)目圈膏,在pom.xml中定義被共用的依賴:通過標(biāo)簽塔猾。

2:在需要使用到共用依賴包的項(xiàng)目中繼承父項(xiàng)目:通過標(biāo)簽

聚合:

創(chuàng)建項(xiàng)目E,在E的pom.xml中稽坤,首先修改E的為pom丈甸,表示項(xiàng)目E只是一個(gè)maven腳本文件,用于執(zhí)行尿褪。然后通過標(biāo)簽進(jìn)行聚合:



依賴范圍

compile:默認(rèn)范圍睦擂,編譯、測試杖玲、運(yùn)行都有效

provided:編譯和測試有效顿仇,最后運(yùn)行不會(huì)被加入,如tomcat依賴

runtime:在測試和運(yùn)行的時(shí)候有效天揖,編譯不會(huì)被加入夺欲,比如jdbc驅(qū)動(dòng)jar

test:測試階段有效,比如junit

system:與provided一致今膊,編譯和測試階段有效些阅,但與系統(tǒng)關(guān)聯(lián),可移植性差

import:導(dǎo)入的范圍斑唬,它只是用在dependencyManagement中市埋,表示從其它的pom中導(dǎo)入dependency的配置




依賴排除

通過<exclusions>標(biāo)簽實(shí)現(xiàn)黎泣。

? ? A項(xiàng)目引用B項(xiàng)目依賴時(shí),主動(dòng)排除傳遞的C項(xiàng)目依賴缤谎,修改A項(xiàng)目pom.xml

? ? <dependency>

? ? ? ? ? <groupId>com.jsun.test</groupId>

? ? ? ? ? <artifactId>B</artifactId>

? ? ? ? ? <version>0.0.1-SNAPSHOT</version>

? ? ? ? ? <exclusions>

? ? ? ? ? ? <exclusion>

? ? ? ? ? ? ? <groupId>com.jsun.test</groupId>

? ? ? ? ? ? ? <artifactId>C</artifactId>

? ? ? ? ? ? </exclusion>

? ? ? ? ? </exclusions>

? ? ? ? </dependency>

通過true實(shí)現(xiàn)

改B項(xiàng)目的pom.xml:

<dependency>

? ? ? <groupId>com.mavan.demo</groupId>

? ? ? <artifactId>C</artifactId>

? ? ? <version>0.0.1-SNAPSHOT</version>

? ? ? <optional>true</optional>

? ? </dependency>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末抒倚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坷澡,更是在濱河造成了極大的恐慌托呕,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件频敛,死亡現(xiàn)場離奇詭異项郊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)斟赚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門着降,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拗军,你說我怎么就攤上這事任洞。” “怎么了发侵?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵交掏,是天一觀的道長。 經(jīng)常有香客問我刃鳄,道長耀销,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任铲汪,我火速辦了婚禮,結(jié)果婚禮上罐柳,老公的妹妹穿的比我還像新娘掌腰。我一直安慰自己,他們只是感情好张吉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布齿梁。 她就那樣靜靜地躺著,像睡著了一般肮蛹。 火紅的嫁衣襯著肌膚如雪勺择。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天伦忠,我揣著相機(jī)與錄音省核,去河邊找鬼。 笑死昆码,一個(gè)胖子當(dāng)著我的面吹牛气忠,可吹牛的內(nèi)容都是我干的邻储。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼旧噪,長吁一口氣:“原來是場噩夢啊……” “哼吨娜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起淘钟,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤宦赠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后米母,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勾扭,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年爱咬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尺借。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡精拟,死狀恐怖燎斩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜂绎,我是刑警寧澤栅表,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站师枣,受9級(jí)特大地震影響怪瓶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜践美,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一洗贰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧陨倡,春花似錦敛滋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杂曲,卻和暖如春庶艾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背擎勘。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工咱揍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人货抄。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓述召,卻偏偏與公主長得像朱转,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子积暖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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