一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

超級(jí)詳細(xì)的Maven使用教程

 春和秋榮 2018-12-25

什么是Maven?

如今我們構(gòu)建一個(gè)項(xiàng)目需要用到很多第三方的類(lèi)庫(kù),如寫(xiě)一個(gè)使用Spring的Web項(xiàng)目就需要引入大量的jar包。一個(gè)項(xiàng)目Jar包的數(shù)量之多往往讓我們瞠目結(jié)舌,并且Jar包之間的關(guān)系錯(cuò)綜復(fù)雜,一個(gè)Jar包往往又會(huì)引用其他Jar包,缺少任何一個(gè)Jar包都會(huì)導(dǎo)致項(xiàng)目編譯失敗。

以往開(kāi)發(fā)項(xiàng)目時(shí),程序員往往需要花較多的精力在引用Jar包搭建項(xiàng)目環(huán)境上,而這一項(xiàng)工作尤為艱難,少一個(gè)Jar包、多一個(gè)Jar包往往會(huì)報(bào)一些讓人摸不著頭腦的異常。

而Maven就是一款幫助程序員構(gòu)建項(xiàng)目的工具,我們只需要告訴Maven需要哪些Jar 包,它會(huì)幫助我們下載所有的Jar,極大提升開(kāi)發(fā)效率。

安裝Maven 和 Maven的Eclipse插件 

http://blog.csdn.net/qjyong/article/details/9098213

Maven規(guī)定的目錄結(jié)構(gòu)

若要使用Maven,那么項(xiàng)目的目錄結(jié)構(gòu)必須符合Maven的規(guī)范,其目錄結(jié)構(gòu)如下:

Maven基本命令

  1. -v:查詢Maven版本

    本命令用于檢查maven是否安裝成功。

    Maven安裝完成之后,在命令行輸入mvn -v,若出現(xiàn)maven信息,則說(shuō)明安裝成功。

  2. compile:編譯

    將java源文件編譯成class文件

  3. test:測(cè)試項(xiàng)目

    執(zhí)行test目錄下的測(cè)試用例

  4. package:打包

    將項(xiàng)目打成jar包

  5. clean:刪除target文件夾

  6. install:安裝

    將當(dāng)前項(xiàng)目放到Maven的本地倉(cāng)庫(kù)中。供其他項(xiàng)目使用

什么是Maven倉(cāng)庫(kù)?

Maven倉(cāng)庫(kù)用來(lái)存放Maven管理的所有Jar包。分為:本地倉(cāng)庫(kù) 和 中央倉(cāng)庫(kù)。

  • 本地倉(cāng)庫(kù):Maven本地的Jar包倉(cāng)庫(kù)。
  • 中央倉(cāng)庫(kù): Maven官方提供的遠(yuǎn)程倉(cāng)庫(kù)。

當(dāng)項(xiàng)目編譯時(shí),Maven首先從本地倉(cāng)庫(kù)中尋找項(xiàng)目所需的Jar包,若本地倉(cāng)庫(kù)沒(méi)有,再到Maven的中央倉(cāng)庫(kù)下載所需Jar包。

什么是“坐標(biāo)”?

在Maven中,坐標(biāo)是Jar包的唯一標(biāo)識(shí),Maven通過(guò)坐標(biāo)在倉(cāng)庫(kù)中找到項(xiàng)目所需的Jar包。

如下代碼中,groupId和artifactId構(gòu)成了一個(gè)Jar包的坐標(biāo)。

  1. <dependency>
  2. <groupId>cn.missbe.web.search</groupId>
  3. <artifactId>resource-search</artifactId>
  4. <packaging>jar</packaging>
  5. <version>1.0-SNAPSHOT</version>
  6. </dependency>
  • groupId:所需Jar包的項(xiàng)目名
  • artifactId:所需Jar包的模塊名
  • version:所需Jar包的版本號(hào)

傳遞依賴 與 排除依賴

  • 傳遞依賴:如果我們的項(xiàng)目引用了一個(gè)Jar包,而該Jar包又引用了其他Jar包,那么在默認(rèn)情況下項(xiàng)目編譯時(shí),Maven會(huì)把直接引用和簡(jiǎn)潔引用的Jar包都下載到本地。
  • 排除依賴:如果我們只想下載直接引用的Jar包,那么需要在pom.xml中做如下配置:(將需要排除的Jar包的坐標(biāo)寫(xiě)在中)
  1. <exclusions>
  2. <exclusion>
  3. <groupId>cn.missbe.web.search</groupId>
  4. <artifactId>resource-search</artifactId>
  5. <packaging>pom</packaging>
  6. <version>1.0-SNAPSHOT</version>
  7. </exclusion>
  8. </exclusions>

依賴范圍scope

在項(xiàng)目發(fā)布過(guò)程中,幫助決定哪些構(gòu)件被包括進(jìn)來(lái)。欲知詳情請(qǐng)參考依賴機(jī)制。    
- compile :默認(rèn)范圍,用于編譯      
- provided:類(lèi)似于編譯,但支持你期待jdk或者容器提供,類(lèi)似于classpath      
- runtime: 在執(zhí)行時(shí)需要使用      
- test:    用于test任務(wù)時(shí)使用      
- system: 需要外在提供相應(yīng)的元素。通過(guò)systemPath來(lái)取得      
- systemPath: 僅用于范圍為system。提供相應(yīng)的路徑      
  - optional:   當(dāng)項(xiàng)目自身被依賴時(shí),標(biāo)注依賴是否傳遞。用于連續(xù)依賴時(shí)使用

依賴沖突

若項(xiàng)目中多個(gè)Jar同時(shí)引用了相同的Jar時(shí),會(huì)產(chǎn)生依賴沖突,但Maven采用了兩種避免沖突的策略,因此在Maven中是不存在依賴沖突的。

  • 短路優(yōu)先
  1. 本項(xiàng)目——>A.jar——>B.jar——>X.jar
  2. 本項(xiàng)目——>C.jar——>X.jar
  1. 本項(xiàng)目——>A.jar——>B.jar——>X.jar

  2. 本項(xiàng)目——>C.jar——>X.jar

若本項(xiàng)目引用了A.jar,A.jar又引用了B.jar,B.jar又引用了X.jar,并且C.jar也引用了X.jar。

在此時(shí),Maven只會(huì)引用引用路徑最短的Jar。

  • 聲明優(yōu)先

    若引用路徑長(zhǎng)度相同時(shí),在pom.xml中誰(shuí)先被聲明,就使用誰(shuí)。

聚合

  1. 什么是聚合?

    將多個(gè)項(xiàng)目同時(shí)運(yùn)行就稱為聚合。

  2. 如何實(shí)現(xiàn)聚合?

    只需在pom中作如下配置即可實(shí)現(xiàn)聚合:

  1. <modules>
  2. <module>web-connection-pool</module>
  3. <module>web-java-crawler</module>
  4. </modules>

繼承

  1. 什么是繼承?

    在聚合多個(gè)項(xiàng)目時(shí),如果這些被聚合的項(xiàng)目中需要引入相同的Jar,那么可以將這些Jar寫(xiě)入父pom中,各個(gè)子項(xiàng)目繼承該pom即可。

  2. 如何實(shí)現(xiàn)繼承?

  • 父pom配置:將需要繼承的Jar包的坐標(biāo)放入標(biāo)簽即可。

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <groupId>cn.missbe.web.search</groupId>
  5. <artifactId>resource-search</artifactId>
  6. <packaging>pom</packaging>
  7. <version>1.0-SNAPSHOT</version>
  8. </dependency>
  9. </dependencies>
  10. </dependencyManagement>
  • 子pom配置:
  1. <parent>
  2. <groupId>父pom所在項(xiàng)目的groupId</groupId>
  3. <artifactId>父pom所在項(xiàng)目的artifactId</artifactId>
  4. <version>父pom所在項(xiàng)目的版本號(hào)</version>
  5. </parent>
  6. <parent>
  7. <artifactId>resource-search</artifactId>
  8. <groupId>cn.missbe.web.search</groupId>
  9. <version>1.0-SNAPSHOT</version>
  10. </parent>

使用Maven構(gòu)建Web項(xiàng)目

  1. New Maven項(xiàng)目:選擇WebApp:

  2. 若使用JSP,需添加Servlet依賴:

    注:Servlet依賴只在編譯和測(cè)試時(shí)使用!

  1. <dependency>
  2. <groupId>javax.servlet</groupId>
  3. <artifactId>javax.servlet-api</artifactId>
  4. <version>3.0.1</version>
  5. <!-- 只在編譯和測(cè)試時(shí)運(yùn)行 -->
  6. <scope>provided</scope>
  7. </dependency>
  1. 在Bulid Path中設(shè)置resource輸出目錄:

  2. 勾選:Dynamic Web Module

  3. 刪掉測(cè)試目錄

  4. 在pom中加入jetty的插件,并設(shè)置JDK版本:

  1. <plugins>
  2. <plugin>
  3. <groupId>org.apache.maven.plugins</groupId>
  4. <artifactId>maven-compiler-plugin</artifactId>
  5. <configuration>
  6. <source>1.8</source>
  7. <target>1.8</target>
  8. </configuration>
  9. </plugin>
  10. <plugin>
  11. <groupId>org.eclipse.jetty</groupId>
  12. <artifactId>jetty-maven-plugin</artifactId>
  13. <version>9.3.10.v20160621</version>
  14. <executions>
  15. <execution>
  16. <phase>package</phase>
  17. </execution>
  18. </executions>
  19. </plugin>
  20. </plugins>
  1. 運(yùn)行項(xiàng)目:

  2. 輸入:jetty:run

  3. 訪問(wèn)127.0.0.1:8080

    若出現(xiàn)如下界面,表示成功!

pom.xml詳解

pom.xml是Maven的核心,你的項(xiàng)目需要什么Jar包就在pom.xml里面配置。當(dāng)編譯項(xiàng)目時(shí)Maven讀取該文件,并從倉(cāng)庫(kù)中下載相應(yīng)的Jar包。

  1. <project xmlns="http://maven./POM/4.0.0"
  2. xmlns:xsi="http://www./2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven./POM/4.0.0http://maven./maven-v4_0_0.xsd">
  4. <!--父項(xiàng)目的坐標(biāo)。如果項(xiàng)目中沒(méi)有規(guī)定某個(gè)元素的值,
  5. 那么父項(xiàng)目中的對(duì)應(yīng)值即為項(xiàng)目的默認(rèn)值。
  6. 坐標(biāo)包括group ID,artifact ID和 version。-->
  7. <parent>
  8. <!--被繼承的父項(xiàng)目的構(gòu)件標(biāo)識(shí)符-->
  9. <artifactId/>
  10. <!--被繼承的父項(xiàng)目的全球唯一標(biāo)識(shí)符-->
  11. <groupId/>
  12. <!--被繼承的父項(xiàng)目的版本-->
  13. <version/>
  14. </parent>
  15. <!--聲明項(xiàng)目描述符遵循哪一個(gè)POM模型版本。模型本身的版本很少改變,雖然如此,
  16. 但它仍然是必不可少的,這是為了當(dāng)Maven引入了新的特性或者其他模型變更的時(shí)候,
  17. 確保穩(wěn)定性。-->
  18. <modelVersion>4.0.0</modelVersion>
  19. <!--項(xiàng)目的全球唯一標(biāo)識(shí)符,通常使用全限定的包名區(qū)分該項(xiàng)目和其他項(xiàng)目。
  20. 并且構(gòu)建時(shí)生成的路徑也是由此生成, 如com.mycompany.app生成的相對(duì)路徑為:
  21. /com/mycompany/app-->
  22. <groupId>cn.missbe.web</groupId>
  23. <!-- 構(gòu)件的標(biāo)識(shí)符,它和group ID一起唯一標(biāo)識(shí)一個(gè)構(gòu)件。換句話說(shuō),
  24. 你不能有兩個(gè)不同的項(xiàng)目擁有同樣的artifact ID和groupID;在某個(gè)
  25. 特定的group ID下,artifact ID也必須是唯一的。構(gòu)件是項(xiàng)目產(chǎn)生的或使用的一個(gè)東西,
  26. Maven為項(xiàng)目產(chǎn)生的構(gòu)件包括:JARs,源碼,二進(jìn)制發(fā)布和WARs等。-->
  27. <artifactId>search-resources</artifactId>
  28. <!--項(xiàng)目產(chǎn)生的構(gòu)件類(lèi)型,例如jar、war、ear、pom。插件可以創(chuàng)建
  29. 他們自己的構(gòu)件類(lèi)型,所以前面列的不是全部構(gòu)件類(lèi)型-->
  30. <packaging>war</packaging>
  31. <!--項(xiàng)目當(dāng)前版本,格式為:主版本.次版本.增量版本-限定版本號(hào)-->
  32. <version>1.0-SNAPSHOT</version>
  33. <!--項(xiàng)目的名稱, Maven產(chǎn)生的文檔用-->
  34. <name>search-resources</name>
  35. <!--項(xiàng)目主頁(yè)的URL, Maven產(chǎn)生的文檔用-->
  36. <url>http://www.</url>
  37. <!-- 項(xiàng)目的詳細(xì)描述, Maven 產(chǎn)生的文檔用。 當(dāng)這個(gè)元素能夠用HTML格式描述時(shí)
  38. (例如,CDATA中的文本會(huì)被解析器忽略,就可以包含HTML標(biāo) 簽),
  39. 不鼓勵(lì)使用純文本描述。如果你需要修改產(chǎn)生的web站點(diǎn)的索引頁(yè)面,
  40. 你應(yīng)該修改你自己的索引頁(yè)文件,而不是調(diào)整這里的文檔。-->
  41. <description>A maven project to study maven.</description>
  42. <!--描述了這個(gè)項(xiàng)目構(gòu)建環(huán)境中的前提條件。-->
  43. <prerequisites>
  44. <!--構(gòu)建該項(xiàng)目或使用該插件所需要的Maven的最低版本-->
  45. <maven/>
  46. </prerequisites>
  47. <!--構(gòu)建項(xiàng)目需要的信息-->
  48. <build>
  49. <!--該元素設(shè)置了項(xiàng)目源碼目錄,當(dāng)構(gòu)建項(xiàng)目的時(shí)候,
  50. 構(gòu)建系統(tǒng)會(huì)編譯目錄里的源碼。該路徑是相對(duì)于pom.xml的相對(duì)路徑。-->
  51. <sourceDirectory/>
  52. <!--該元素設(shè)置了項(xiàng)目腳本源碼目錄,該目錄和源碼目錄不同:
  53. 絕大多數(shù)情況下,該目錄下的內(nèi)容 會(huì)被拷貝到輸出目錄(因?yàn)槟_本是被解釋的,而不是被編譯的)。-->
  54. <scriptSourceDirectory/>
  55. <!--該元素設(shè)置了項(xiàng)目單元測(cè)試使用的源碼目錄,當(dāng)測(cè)試項(xiàng)目的時(shí)候,
  56. 構(gòu)建系統(tǒng)會(huì)編譯目錄里的源碼。該路徑是相對(duì)于pom.xml的相對(duì)路徑。-->
  57. <testSourceDirectory/>
  58. <!--被編譯過(guò)的應(yīng)用程序class文件存放的目錄。-->
  59. <outputDirectory/>
  60. <!--被編譯過(guò)的測(cè)試class文件存放的目錄。-->
  61. <testOutputDirectory/>
  62. <!--使用來(lái)自該項(xiàng)目的一系列構(gòu)建擴(kuò)展-->
  63. <extensions>
  64. <!--描述使用到的構(gòu)建擴(kuò)展。-->
  65. <extension>
  66. <!--構(gòu)建擴(kuò)展的groupId-->
  67. <groupId/>
  68. <!--構(gòu)建擴(kuò)展的artifactId-->
  69. <artifactId/>
  70. <!--構(gòu)建擴(kuò)展的版本-->
  71. <version/>
  72. </extension>
  73. </extensions>
  74. <!--這個(gè)元素描述了項(xiàng)目相關(guān)的所有資源路徑列表,例如和項(xiàng)目相關(guān)的屬性文件,
  75. 這些資源被包含在最終的打包文件里。-->
  76. <resources>
  77. <!--這個(gè)元素描述了項(xiàng)目相關(guān)或測(cè)試相關(guān)的所有資源路徑-->
  78. <resource>
  79. <!-- 描述了資源的目標(biāo)路徑。該路徑相對(duì)target/classes目錄(例如${project.build.outputDirectory})。舉個(gè)例 子,如果你想資源在特定的包里(org.apache.maven.messages),你就必須該元素設(shè)置為org/apache/maven /messages。
  80. 然而,如果你只是想把資源放到源碼目錄結(jié)構(gòu)里,就不需要該配置。-->
  81. <targetPath/>
  82. <!--是否使用參數(shù)值代替參數(shù)名。參數(shù)值取自properties元素或者文件里配置的屬性,
  83. 文件在filters元素里列出。-->
  84. <filtering/>
  85. <!--描述存放資源的目錄,該路徑相對(duì)POM路徑-->
  86. <directory/>
  87. <!--包含的模式列表,例如**/*.xml.-->
  88. <includes/>
  89. <!--排除的模式列表,例如**/*.xml-->
  90. <excludes/>
  91. </resource>
  92. </resources>
  93. <!--這個(gè)元素描述了單元測(cè)試相關(guān)的所有資源路徑,例如和單元測(cè)試相關(guān)的屬性文件。-->
  94. <testResources>
  95. <!--這個(gè)元素描述了測(cè)試相關(guān)的所有資源路徑,參見(jiàn)build/resources/resource元素的說(shuō)明-->
  96. <testResource>
  97. <targetPath/><filtering/><directory/><includes/><excludes/>
  98. </testResource>
  99. </testResources>
  100. <!--構(gòu)建產(chǎn)生的所有文件存放的目錄-->
  101. <directory/>
  102. <!--產(chǎn)生的構(gòu)件的文件名,默認(rèn)值是${artifactId}-${version}。-->
  103. <finalName/>
  104. <!--當(dāng)filtering開(kāi)關(guān)打開(kāi)時(shí),使用到的過(guò)濾器屬性文件列表-->
  105. <filters/>
  106. <!--子項(xiàng)目可以引用的默認(rèn)插件信息。該插件配置項(xiàng)直到被引用時(shí)才會(huì)被解析或綁定到生命周期。
  107. 給定插件的任何本地配置都會(huì)覆蓋這里的配置-->
  108. <pluginManagement>
  109. <!--使用的插件列表 。-->
  110. <plugins>
  111. <!--plugin元素包含描述插件所需要的信息。-->
  112. <plugin>
  113. <!--插件在倉(cāng)庫(kù)里的group ID-->
  114. <groupId/>
  115. <!--插件在倉(cāng)庫(kù)里的artifact ID-->
  116. <artifactId/>
  117. <!--被使用的插件的版本(或版本范圍)-->
  118. <version/>
  119. <!--是否從該插件下載Maven擴(kuò)展(例如打包和類(lèi)型處理器),由于性能原因,
  120. 只有在真需要下載時(shí),該元素才被設(shè)置成enabled。-->
  121. <extensions/>
  122. <!--在構(gòu)建生命周期中執(zhí)行一組目標(biāo)的配置。每個(gè)目標(biāo)可能有不同的配置。-->
  123. <executions>
  124. <!--execution元素包含了插件執(zhí)行需要的信息-->
  125. <execution>
  126. <!--執(zhí)行目標(biāo)的標(biāo)識(shí)符,用于標(biāo)識(shí)構(gòu)建過(guò)程中的目標(biāo),或者匹配繼承過(guò)程中需要合并的執(zhí)行目標(biāo)-->
  127. <id/>
  128. <!--綁定了目標(biāo)的構(gòu)建生命周期階段,如果省略,目標(biāo)會(huì)被綁定到源數(shù)據(jù)里配置的默認(rèn)階段-->
  129. <phase/>
  130. <!--配置的執(zhí)行目標(biāo)-->
  131. <goals/>
  132. <!--配置是否被傳播到子POM-->
  133. <inherited/>
  134. <!--作為DOM對(duì)象的配置-->
  135. <configuration/>
  136. </execution>
  137. </executions>
  138. <!--項(xiàng)目引入插件所需要的額外依賴-->
  139. <dependencies>
  140. <!--參見(jiàn)dependencies/dependency元素-->
  141. <dependency>
  142. ......
  143. </dependency>
  144. </dependencies>
  145. <!--任何配置是否被傳播到子項(xiàng)目-->
  146. <inherited/>
  147. <!--作為DOM對(duì)象的配置-->
  148. <configuration/>
  149. </plugin>
  150. </plugins>
  151. </pluginManagement>
  152. <!--使用的插件列表-->
  153. <plugins>
  154. <!--參見(jiàn)build/pluginManagement/plugins/plugin元素-->
  155. <plugin>
  156. <groupId/><artifactId/><version/><extensions/>
  157. <executions>
  158. <execution>
  159. <id/><phase/><goals/><inherited/><configuration/>
  160. </execution>
  161. </executions>
  162. <dependencies>
  163. <!--參見(jiàn)dependencies/dependency元素-->
  164. <dependency>
  165. ......
  166. </dependency>
  167. </dependencies>
  168. <goals/><inherited/><configuration/>
  169. </plugin>
  170. </plugins>
  171. </build>
  172. <!--模塊(有時(shí)稱作子項(xiàng)目) 被構(gòu)建成項(xiàng)目的一部分。
  173. 列出的每個(gè)模塊元素是指向該模塊的目錄的相對(duì)路徑-->
  174. <modules/>
  175. <!--發(fā)現(xiàn)依賴和擴(kuò)展的遠(yuǎn)程倉(cāng)庫(kù)列表。-->
  176. <repositories>
  177. <!--包含需要連接到遠(yuǎn)程倉(cāng)庫(kù)的信息-->
  178. <repository>
  179. <!--如何處理遠(yuǎn)程倉(cāng)庫(kù)里發(fā)布版本的下載-->
  180. <releases>
  181. <!--true或者false表示該倉(cāng)庫(kù)是否為下載某種類(lèi)型構(gòu)件(發(fā)布版,快照版)開(kāi)啟。 -->
  182. <enabled/>
  183. <!--該元素指定更新發(fā)生的頻率。Maven會(huì)比較本地POM和遠(yuǎn)程POM的時(shí)間戳。這里的選項(xiàng)是:always(一直),daily(默認(rèn),每日),interval:X(這里X是以分鐘為單位的時(shí)間間隔),或者never(從不)。-->
  184. <updatePolicy/>
  185. <!--當(dāng)Maven驗(yàn)證構(gòu)件校驗(yàn)文件失敗時(shí)該怎么做:ignore(忽略),fail(失?。?,或者warn(警告)。-->
  186. <checksumPolicy/>
  187. </releases>
  188. <!-- 如何處理遠(yuǎn)程倉(cāng)庫(kù)里快照版本的下載。有了releases和snapshots這兩組配置,
  189. POM就可以在每個(gè)單獨(dú)的倉(cāng)庫(kù)中,為每種類(lèi)型的構(gòu)件采取不同的 策略。
  190. 例如,可能有人會(huì)決定只為開(kāi)發(fā)目的開(kāi)啟對(duì)快照版本下載的支持。
  191. 參見(jiàn)repositories/repository/releases元素 -->
  192. <snapshots>
  193. <enabled/><updatePolicy/><checksumPolicy/>
  194. </snapshots>
  195. <!--遠(yuǎn)程倉(cāng)庫(kù)唯一標(biāo)識(shí)符??梢杂脕?lái)匹配在settings.xml文件里配置的遠(yuǎn)程倉(cāng)庫(kù)-->
  196. <id>banseon-repository-proxy</id>
  197. <!--遠(yuǎn)程倉(cāng)庫(kù)名稱-->
  198. <name>banseon-repository-proxy</name>
  199. <!--遠(yuǎn)程倉(cāng)庫(kù)URL,按protocol://hostname/path形式-->
  200. <url>http://192.168.1.169:9999/repository/</url>
  201. <!-- 用于定位和排序構(gòu)件的倉(cāng)庫(kù)布局類(lèi)型-可以是default(默認(rèn))或者legacy(遺留)。Maven 2為其倉(cāng)庫(kù)提供了一個(gè)默認(rèn)的布局;然 而,Maven 1.x有一種不同的布局。我們可以使用該元素指定布局是default(默認(rèn))還是legacy(遺留)。-->
  202. <layout>default</layout>
  203. </repository>
  204. </repositories>
  205. <!--發(fā)現(xiàn)插件的遠(yuǎn)程倉(cāng)庫(kù)列表,這些插件用于構(gòu)建和報(bào)表-->
  206. <pluginRepositories>
  207. <!--包含需要連接到遠(yuǎn)程插件倉(cāng)庫(kù)的信息.參見(jiàn)repositories/repository元素-->
  208. <pluginRepository>
  209. ......
  210. </pluginRepository>
  211. </pluginRepositories>
  212. <!--該元素描述了項(xiàng)目相關(guān)的所有依賴。 這些依賴組成了項(xiàng)目構(gòu)建過(guò)程中的一個(gè)個(gè)環(huán)節(jié)。
  213. 它們自動(dòng)從項(xiàng)目定義的倉(cāng)庫(kù)中下載。要獲取更多信息,請(qǐng)看項(xiàng)目依賴機(jī)制。-->
  214. <dependencies>
  215. <dependency>
  216. <!--依賴的group ID-->
  217. <groupId>org.apache.maven</groupId>
  218. <!--依賴的artifact ID-->
  219. <artifactId>maven-artifact</artifactId>
  220. <!--依賴的版本號(hào)。 在Maven 2里, 也可以配置成版本號(hào)的范圍。-->
  221. <version>3.8.1</version>
  222. <!-- 依賴類(lèi)型,默認(rèn)類(lèi)型是jar。它通常表示依賴的文件的擴(kuò)展名,但也有例外
  223. 。一個(gè)類(lèi)型可以被映射成另外一個(gè)擴(kuò)展名或分類(lèi)器。類(lèi)型經(jīng)常和使用的打包方式對(duì)應(yīng),
  224. 盡管這也有例外。一些類(lèi)型的例子:jar,war,ejb-client和test-jar。
  225. 如果設(shè)置extensions為 true,就可以在 plugin里定義新的類(lèi)型。所以前面的類(lèi)型的例子不完整。-->
  226. <type>jar</type>
  227. <!-- 依賴的分類(lèi)器。分類(lèi)器可以區(qū)分屬于同一個(gè)POM,但不同構(gòu)建方式的構(gòu)件。
  228. 分類(lèi)器名被附加到文件名的版本號(hào)后面。例如,如果你想要構(gòu)建兩個(gè)單獨(dú)的構(gòu)件成 JAR,
  229. 一個(gè)使用Java 1.4編譯器,另一個(gè)使用Java 6編譯器,你就可以使用分類(lèi)器來(lái)生成兩個(gè)單獨(dú)的JAR構(gòu)件。-->
  230. <classifier></classifier>
  231. <!--依賴范圍。在項(xiàng)目發(fā)布過(guò)程中,幫助決定哪些構(gòu)件被包括進(jìn)來(lái)。欲知詳情請(qǐng)參考依賴機(jī)制。
  232. - compile :默認(rèn)范圍,用于編譯
  233. - provided:類(lèi)似于編譯,但支持你期待jdk或者容器提供,類(lèi)似于classpath
  234. - runtime: 在執(zhí)行時(shí)需要使用
  235. - test: 用于test任務(wù)時(shí)使用
  236. - system: 需要外在提供相應(yīng)的元素。通過(guò)systemPath來(lái)取得
  237. - systemPath: 僅用于范圍為system。提供相應(yīng)的路徑
  238. - optional: 當(dāng)項(xiàng)目自身被依賴時(shí),標(biāo)注依賴是否傳遞。用于連續(xù)依賴時(shí)使用-->
  239. <scope>test</scope>
  240. <!--僅供system范圍使用。注意,不鼓勵(lì)使用這個(gè)元素,
  241. 并且在新的版本中該元素可能被覆蓋掉。該元素為依賴規(guī)定了文件系統(tǒng)上的路徑。
  242. 需要絕對(duì)路徑而不是相對(duì)路徑。推薦使用屬性匹配絕對(duì)路徑,例如${java.home}。-->
  243. <systemPath></systemPath>
  244. <!--當(dāng)計(jì)算傳遞依賴時(shí), 從依賴構(gòu)件列表里,列出被排除的依賴構(gòu)件集。
  245. 即告訴maven你只依賴指定的項(xiàng)目,不依賴項(xiàng)目的依賴。此元素主要用于解決版本沖突問(wèn)題-->
  246. <exclusions>
  247. <exclusion>
  248. <artifactId>spring-core</artifactId>
  249. <groupId>org.springframework</groupId>
  250. </exclusion>
  251. </exclusions>
  252. <!--可選依賴,如果你在項(xiàng)目B中把C依賴聲明為可選,你就需要在依賴于B的項(xiàng)目(例如項(xiàng)目A)中顯式的引用對(duì)C的依賴??蛇x依賴阻斷依賴的傳遞性。-->
  253. <optional>true</optional>
  254. </dependency>
  255. </dependencies>
  256. <!-- 繼承自該項(xiàng)目的所有子項(xiàng)目的默認(rèn)依賴信息。這部分的依賴信息不會(huì)被立即解析,
  257. 而是當(dāng)子項(xiàng)目聲明一個(gè)依賴(必須描述group ID和 artifact ID信息),
  258. 如果group ID和artifact ID以外的一些信息沒(méi)有描述,
  259. 則通過(guò)group ID和artifact ID 匹配到這里的依賴,并使用這里的依賴信息。-->
  260. <dependencyManagement>
  261. <dependencies>
  262. <!--參見(jiàn)dependencies/dependency元素-->
  263. <dependency>
  264. ......
  265. </dependency>
  266. </dependencies>
  267. </dependencyManagement>
  268. <!--項(xiàng)目分發(fā)信息,在執(zhí)行mvn deploy后表示要發(fā)布的位置。
  269. 有了這些信息就可以把網(wǎng)站部署到遠(yuǎn)程服務(wù)器或者把構(gòu)件部署到遠(yuǎn)程倉(cāng)庫(kù)。-->
  270. <distributionManagement>
  271. <!--部署項(xiàng)目產(chǎn)生的構(gòu)件到遠(yuǎn)程倉(cāng)庫(kù)需要的信息-->
  272. <repository>
  273. <!--是分配給快照一個(gè)唯一的版本號(hào)(由時(shí)間戳和構(gòu)建流水號(hào))?
  274. 還是每次都使用相同的版本號(hào)?參見(jiàn)repositories/repository元素-->
  275. <uniqueVersion/>
  276. <id>banseon-maven2</id>
  277. <name>banseon maven2</name>
  278. <url>file://${basedir}/target/deploy</url>
  279. <layout/>
  280. </repository>
  281. <!--構(gòu)件的快照部署到哪里?如果沒(méi)有配置該元素,默認(rèn)部署到repository元素配置的倉(cāng)庫(kù),
  282. 參見(jiàn)distributionManagement/repository元素-->
  283. <snapshotRepository>
  284. <uniqueVersion/>
  285. <id>banseon-maven2</id>
  286. <name>Banseon-maven2 Snapshot Repository</name>
  287. <url>scp://svn.baidu.com/banseon:/usr/local/maven-snapshot</url>
  288. <layout/>
  289. </snapshotRepository>
  290. <!--部署項(xiàng)目的網(wǎng)站需要的信息-->
  291. <site>
  292. <!--部署位置的唯一標(biāo)識(shí)符,用來(lái)匹配站點(diǎn)和settings.xml文件里的配置-->
  293. <id>banseon-site</id>
  294. <!--部署位置的名稱-->
  295. <name>business api website</name>
  296. <!--部署位置的URL,按protocol://hostname/path形式-->
  297. <url>
  298. scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
  299. </url>
  300. </site>
  301. <!--項(xiàng)目下載頁(yè)面的URL。如果沒(méi)有該元素,用戶應(yīng)該參考主頁(yè)。
  302. 使用該元素的原因是:幫助定位那些不在倉(cāng)庫(kù)里的構(gòu)件(由于license限制)。-->
  303. <downloadUrl/>
  304. <!-- 給出該構(gòu)件在遠(yuǎn)程倉(cāng)庫(kù)的狀態(tài)。不得在本地項(xiàng)目中設(shè)置該元素,
  305. 因?yàn)檫@是工具自動(dòng)更新的。有效的值有:none(默認(rèn)),
  306. converted(倉(cāng)庫(kù)管理員從 Maven 1 POM轉(zhuǎn)換過(guò)來(lái)),partner(直接從伙伴Maven 2倉(cāng)庫(kù)同步過(guò)來(lái)),deployed(從Maven 2實(shí)例部 署),verified(被核實(shí)時(shí)正確的和最終的)。-->
  307. <status/>
  308. </distributionManagement>
  309. <!--以值替代名稱,Properties可以在整個(gè)POM中使用,也可以作為觸發(fā)條件(見(jiàn)settings.xml配置文件里activation元素的說(shuō)明)。格式是<name>value</name>。-->
  310. <properties/>
  311. </project>

參考原文:Maven使用詳解

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    午夜激情视频一区二区| 日韩一区二区三区四区乱码视频| 麻豆一区二区三区精品视频| 久久99青青精品免费| 日本人妻中出在线观看| 夫妻性生活黄色录像视频| 欧美一区二区日韩一区二区| 亚洲另类欧美综合日韩精品| 中文字幕中文字幕在线十八区 | 日韩一级毛一欧美一级乱| 久久国内午夜福利直播| 国产情侣激情在线对白| 日韩视频在线观看成人| 欧美日韩欧美国产另类| 五月情婷婷综合激情综合狠狠| 国产成人精品视频一区二区三区| 成人日韩在线播放视频| 国产又猛又大又长又粗| 熟女乱一区二区三区丝袜| 午夜成年人黄片免费观看| 亚洲a级一区二区不卡| 国产又粗又长又大的视频| 欧美精品久久男人的天堂| 国内欲色一区二区三区| 九九热视频免费在线视频| 在线欧洲免费无线码二区免费| 亚洲天堂久久精品成人| 亚洲国产四季欧美一区| 欧美日韩国产的另类视频| 国产精品一区欧美二区| 成人午夜在线视频观看| 99国产精品国产精品九九 | 亚洲av熟女国产一区二区三区站| 亚洲国产丝袜一区二区三区四 | 国产人妻熟女高跟丝袜| 成人午夜免费观看视频| 国产午夜精品久久福利| 美女被草的视频在线观看| 色婷婷视频在线精品免费观看| 中文字幕中文字幕在线十八区| 美女被后入视频在线观看|