1. 程式人生 > >Maven入門-3.pom檔案和settings檔案

Maven入門-3.pom檔案和settings檔案

1、pom.xml檔案介紹

Maven專案的核心是pom.xml,pom(Project Object Model專案物件模型
pom.xml檔案定義了專案的基本資訊,專案構建,專案依賴等。

  1. <projectxmlns=" http://maven.apache.org/POM/4.0.0 "xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
  2. xsi:schemaLocation=" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
  3. <modelVersion>
    4.0.0</modelVersion>
  4. <groupId>com.fz.shiro</groupId>
  5. <artifactId>ShiroTest</artifactId>
  6. <packaging>war</packaging>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>ShiroTest Maven Webapp</name>
  9. </project>

porject:是所有元素的根元素
以下元素(groupId,artifactId,packaging,version)是maven的座標,他們唯一標識了一個專案
modelVersion

:指定了當前模型的版本,對於Maven2和Maven3來說,它只能說4.0.0
groupId:定義了專案屬於哪個組,假如你在github上建立一個demo專案,那groupId應該com.github.demo。如果你的公司是百度,有個helloword的專案。那groupId應該為com.baidu.helloword如果你的helloword專案有很多模組,則按模組化分。com.baidu.helloword.模組名稱
artifactId:定義了當前maven專案在組中的唯一ID,假如你的專案為myapp,groupId為com.baid.myapp。那你的artifactId可以按模組劃分。例如當前編寫的是myapp專案中的工具類,則artifactId可以為myapp-utils
packaging
:表示打包後項目的型別(預設是jar),web專案為war
version:指定了當前專案的版本,SNAPSHOT意為快照,表示正在開發中,不是穩定版本。
name:聲明瞭一個對於使用者更為友好的專案名稱

2、settings.xml檔案介紹

包含了本地倉庫位置,遠端倉庫伺服器以及認證資訊等。
settings.xml存在於兩個地方:

  1. 安裝的地方:$M2_HOME/conf/settings.xml
  2. 使用者的目錄:${user.home}/.m2/settings.xml

前者又被叫做全域性配置,後者被稱為使用者配置。如果兩者都存在,它們的內容將被合併,並且使用者範圍的settings.xml優先。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <settingsxmlns="http://maven.apache.org/SETTINGS/1.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5. <!--指定本地倉庫儲存路徑。預設值為~/.m2/repository 即 ${user.home}/.m2/repository。 -->
  6. <localRepository>d:/.m2/repository</localRepository>
  7. <!--指定Maven是否需要和使用者輸入進行互動。true:需要與使用者互動;false:使用一個合理的預設值。預設值為true。 -->
  8. <interactiveMode>true</interactiveMode>
  9. <!--指定是否使用plugin-registry.xml檔案來管理外掛版本。設為true表示使用。預設值為false。 -->
  10. <usePluginRegistry>false</usePluginRegistry>
  11. <!--指定是否在離線模式下執行。設為true表示專案構建要在離線模式下執行,預設值為false。 -->
  12. <offline>false</offline>
  13. <!-- 指定外掛groupId列表,用於搜尋時外掛的groupId沒有明確規定。 -->
  14. <pluginGroups>
  15. <!-- 指定使用外掛查詢進一步的組識別符號 -->
  16. <pluginGroup>com.micmiu.plugins</pluginGroup>
  17. </pluginGroups>
  18. <!-- 指定這臺機器連線到網路的代理伺服器的列表。除非另有規定(系統屬性或命令列開關), 列表中配置的第一代理將被啟用使用。 -->
  19. <proxies>
  20. <!-- 配置代理伺服器的相關引數 -->
  21. <proxy>
  22. <!-- 代理標識ID,預設值:default -->
  23. <id>micmiuProxy</id>
  24. <!-- 指定是否啟用,預設值:true -->
  25. <active>true</active>
  26. <!-- 指定代理協議,預設值:http -->
  27. <protocol>http</protocol>
  28. <!-- 指定代理認證的使用者名稱 -->
  29. <username>micmiu</username>
  30. <!-- 指定代理認證使用者的密碼 -->
  31. <password>mypwd</password>
  32. <!-- 指定代理伺服器的主機名 -->
  33. <host>micmiu.com</host>
  34. <!-- 指定代理服務的埠 預設值:8080 -->
  35. <port>80</port>
  36. <!-- 指定不被代理的主機名列表。多個用|分隔。 -->
  37. <nonProxyHosts>ctosun.com|ctosun.micmiu.com</nonProxyHosts>
  38. </proxy>
  39. </proxies>
  40. <!-- 這是一個認證配置的列表,系統內部根據配置的serverID使用。認證配置用於maven連結到遠端服務 -->
  41. <servers>
  42. <!-- 指定的身份認證資訊用於連線到一個特定的伺服器時,確定系統內的唯一的名稱(簡稱下面的'id'屬性)。 -->
  43. <server>
  44. <!-- 這是server的id(注意不是使用者登陸的id)。該id與distributionManagement中repository元素的id必須要匹配。 -->
  45. <id>micmiu-releases</id>
  46. <!-- 伺服器認證的使用者名稱 -->
  47. <username>michael</username>
  48. <!-- 伺服器認證的使用者對應的密碼 -->
  49. <password>mypwd</password>
  50. </server>
  51. <!-- 另一個示例 私鑰/密碼 -->
  52. <server>
  53. <id>micmiu-snapshots</id>
  54. <!-- 認證時使用的私鑰檔案。 -->
  55. <privateKey>/home/micmiu/.ssh/id_dsa</privateKey>
  56. <!-- 認證時使用的私鑰密碼,沒有密碼就設為空 -->
  57. <passphrase>mypwd</passphrase>
  58. <!-- 目錄被建立時的許可權設定。其值對應了unix檔案系統的許可權,如664,或者775 -->
  59. <directoryPermissions>775</directoryPermissions>
  60. <!-- 倉庫檔案建立時的許可權設定。其值對應了unix檔案系統的許可權,如664,或者775。 -->
  61. <filePermissions>664</filePermissions>
  62. </server>
  63. </servers>
  64. <!-- 指定映象列表,用於從遠端倉庫下載資源 -->
  65. <mirrors>
  66. <!-- 指定倉庫的映象站點,代替一個給定的庫。該映象藏庫有一個ID相匹配的mirrorOf元素。 ID是用於繼承和直接查詢目的,必須是唯一的。 -->
  67. <mirror>
  68. <!--該映象的唯一識別符號。id用來區分不同的mirror元素。 -->
  69. <id>mirrorId</id>
  70. <!--被映象的伺服器的id,比如:central,不能和id匹配。 -->
  71. <mirrorOf>central</mirrorOf>
  72. <name>micmiu for dev.</name>
  73. <url>http://dev.micmiu.com/repo/maven2</url>
  74. </mirror>
  75. </mirrors>
  76. <!-- 這是一個可以在各種不同的方式啟用的配置檔案列表,並可以修改構建過程。在settings.xml中提供的資訊, 旨在提供本地機器允許建立在本地環境中工作的具體路徑和庫位置。有多種方式可以啟用配置屬性:一種在settings.xml中<activeProfiles>指定;
  77. 另一種實質上依賴於系統屬性,無論是匹配特定的屬性值或只是測試到它的存在.配置檔案也可以根據JDK版本的字首進行啟用,1.4 可以啟用1.4.2_07
  78. 注:對於在settings.xml中定義的配置,你僅限於指定資源倉庫、外掛倉庫和用於外掛在POM中變數的自由形式屬性的定義 -->
  79. <profiles>
  80. <!-- 指定生成過程的介紹,使用一個或多個上述機制被啟用。對於繼承而言,啟用通過<activatedProfiles/>或命令列配置檔案,
  81. 配置檔案必須有一個唯一的ID。此配置檔案的例子使用的JDK版本觸發啟用。 -->
  82. <profile>
  83. <!--該配置的唯一識別符號。 -->
  84. <id>jdk-1.4</id>
  85. <!--自動觸發配置檔案的邏輯定義。Activation的邏輯配置決定了是否開啟該profile。activation元素並不是啟用profile的唯一方式。
  86. settings.xml檔案中的activeProfile元素可指定需要啟用的profile的id。 profile也可以通過在命令列,使用-P標記和逗號分隔的列表來顯式的啟用 -->
  87. <activation>
  88. <!--指定是否啟用的標識 預設值為false -->
  89. <activeByDefault>false</activeByDefault>
  90. <!--當匹配的jdk被檢測到,profile被啟用。例如,1.4啟用JDK1.4,1.4.0_2,而!1.4啟用所有不是以1.4開頭的JDK版本。 -->
  91. <jdk>1.4</jdk>
  92. <!-- 當檢測到匹配的作業系統屬性時,指定該配置檔案將被啟用, -->
  93. <os>
  94. <!--啟用profile的作業系統的名字 -->
  95. <name>windows 7</name>
  96. <!--啟用profile的作業系統所屬家族(如 'windows') -->
  97. <family>windows</family>
  98. <!--啟用profile的作業系統體系結構 -->
  99. <arch>x86</arch>
  100. <!--啟用profile的作業系統版本 -->
  101. <version>6.1</version>
  102. </os>
  103. <!-- 檢測系統對應的屬性和值(該值可在POM中通過${屬性名稱}引用),配置就會被啟用。 如果值欄位是空的,那麼存在屬性名稱欄位就會啟用 -->
  104. <property>
  105. <!-- 屬性的名稱 -->
  106. <name>mavenVersion</name>
  107. <!-- 屬性的值 -->
  108. <value>3.0.4</value>
  109. </property>
  110. <!-- 通過檢測該檔案的是否存在來啟用配置。missing檢查檔案是否存在,如果不存在則啟用profile;exists則會檢查檔案是否存在,如果存在則啟用。 -->
  111. <file>
  112. <!--如果指定的檔案存在,則啟用profile。 -->
  113. <exists>/usr/local/micmiu/workspace/myfile</exists>
  114. <!--如果指定的檔案不存在,則啟用profile。 -->
  115. <missing>/usr/local/micmiu/workspace/myfile</missing>
  116. </file>
  117. </activation>
  118. <!-- 對應profile的擴充套件屬性列表。Maven屬性和Ant中的屬性一樣,可以用來存放一些值。這些值可以在POM中的任何地方使用標記${X}來使用,
  119. 這裡X是指屬性的名稱。屬性有五種不同的形式,並且都能在settings.xml檔案中訪問。 1\. env.X: 表示系統環境變數。例如,"env.PATH"
  120. 等同於 $path環境變數(在Windows上是%PATH%)。 2\. project.x:表示 POM中對應的屬性值。 3\. settings.x:
  121. 表示 settings.xml中對應屬性值。 4\. Java系統屬性: 所有可通過java.lang.System.getProperties()訪問的屬性都能在POM中使用該形式訪問。
  122. 5\. x: 在<properties/>元素中,或者外部檔案中設定,以${someVar}的形式使用。 -->
  123. <properties>
  124. <user.blog>www.micmiu.com</user.blog>
  125. </properties>
  126. </profile>
  127. <!-- 這是另一個配置檔案,根據系統屬性來啟用 -->
  128. <profile>
  129. <!--該配置的唯一識別符號。 -->
  130. <id>env-dev</id>
  131. <activation>
  132. <property>
  133. <!-- 被用來啟用配置檔案的屬性的名稱 -->
  134. <name>target-env</name>
  135. <!-- 被用來啟用配置檔案的屬性的值 -->
  136. <value>dev</value>
  137. </property>
  138. </activation>
  139. <!-- 指定配置檔案的擴充套件配置 內容採取property.value的形式 -->
  140. <properties>
  141. <tomcatPath>/path/to/tomcat/instance</tomcatPath>
  142. </properties>
  143. </profile>
  144. <profile>
  145. <id>repo-dev</id>
  146. <!-- 配置遠端倉庫列表 -->
  147. <repositories>
  148. <!-- 遠端倉庫的配置資訊 -->
  149. <repository>
  150. <!-- 遠端倉庫唯一標識 -->
  151. <id>nexus</id>
  152. <!-- 遠端倉庫名稱 -->
  153. <name>nexus for develop</name>
  154. <!-- 遠端倉庫URL -->
  155. <url>http://192.168.1.8:8080/nexus/content/groups/public/</url>
  156. <layout>default</layout>
  157. <releases>
  158. <!--是否使用這個資源庫下載這種型別的構件 預設值:true -->
  159. <enabled>true</enabled>
  160. <!--指定下載更新的頻率。這裡的選項是:always(一直),daily(每日,預設值),interval:X(這裡X是指分鐘),或者never(從不)。 -->
  161. <updatePolicy>daily</updatePolicy>
  162. <!--當Maven驗證構件校驗檔案失敗時該怎麼做fail(失敗)或者warn(告警)。 -->
  163. <checksumPolicy>warn</checksumPolicy>
  164. </releases>
  165. <snapshots>
  166. <!--是否使用這個資源庫下載這種型別的構件 預設值:true -->
  167. <enabled>true</enabled>
  168. <!--指定下載更新的頻率。這裡的選項是:always(一直),daily(每日,預設值),interval:X(這裡X是指分鐘),或者never(從不)。 -->
  169. <updatePolicy>daily</updatePolicy>
  170. <!--當Maven驗證構件校驗檔案失敗時該怎麼做fail(失敗)或者warn(告警)。 -->
  171. <checksumPolicy>warn</checksumPolicy>
  172. </snapshots>
  173. </repository>
  174. </repositories>
  175. <pluginRepositories>
  176. <pluginRepository>
  177. <id>nexus</id>
  178. <name>local nexus</name>
  179. <url>http://192.168.1.8:8080/nexus/content/groups/public</url>
  180. <layout>default</layout>
  181. <releases>
  182. <enabled>true</enabled>
  183. </releases>
  184. <snapshots>
  185. <enabled>true</enabled>
  186. </snapshots>
  187. </pluginRepository>
  188. </pluginRepositories>
  189. </profile>
  190. </profiles>
  191. <!-- 指定被啟用的配置檔案 -->
  192. <activeProfiles>
  193. <activeProfile>repo-dev</activeProfile>
  194. </activeProfiles>
  195. </settings>