一.什么是pom
pom作為項目對象模型。通過xml表示maven項目,使用pom.xml來實現。主要描述了項目:包括配置文件;開發者需要遵循的規則,缺陷管理系統,組織和licenses,項目的url,項目的依賴性,以及其他所有的項目相關因素。
二.內容注解
1 <!-- 當前POM模型的版本 --> 2 <modelVersion>4.0.0</modelVersion> 3 4 <!-- 父項目坐標 --> 5 <parent> 6 <groupId>項目組織唯一的標識符(com.xxx)</groupId> 7 <artifactId>項目的唯一的標識符(項目名稱)</artifactId> 8 <version>版本號</version> 9 <!--父項目的pom.xml文件的相對路徑。相對路徑允許你選擇一個不同的路徑。默認值是../pom.xml。Maven首先在構建當前項目的地方尋找父項目的pom,其次在文件系統的這個位置(relativePath位置),然后在本地倉庫,最后在遠程倉庫尋找父項目的pom。--> 10 <relativePath></relativePath> 11 </parent> 12 13 14 <!-- 項目坐標 --> 15 <groupId>項目組織唯一的標識符(com.xxx)</groupId> 16 <artifactId>項目的唯一的標識符((項目名稱))</artifactId> 17 <packaging>打包類型</packaging> 18 <version>版本號</version> 19 20 <!-- 項目信息 --> 21 <name>名稱</name> 22 <description>描述</description> 23 <url>網址</url> 24 <inceptionYear>工程的初始時間</inceptionYear> 25 26 <!-- 屬性 --> 27 <properties> 28 <!-- 定義一些常量 --> 29 <jdk.version>1.7</jdk.version> 30 <servlet.api.version>3.0.1</servlet.api.version> 31 <jsp.api.version>2.1</jsp.api.version> 32 <junit.version>4.11</junit.version> 33 <mysql.version>5.1.21</mysql.version> 34 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 35 </properties> 36 37 <!-- 依賴管理,父項目中用來統一管理依賴的,子項目中直接使用dependencies --> 38 <dependencyManagement> 39 <dependencies> 40 <dependency> 41 <groupId>javax.servlet</groupId> 42 <artifactId>javax.servlet.api</artifactId> 43 <version>3.0.1</version> 44 <scope>provided</scope> 45 </dependency> 46 </dependencies> 47 </dependencyManagement> 48 49 <!-- 依賴項 --> 50 <dependencies> 51 <dependency> 52 <groupId>javax.servlet</groupId> 53 <artifactId>javax.servlet.api</artifactId> 54 <version>3.0.1</version> 55 <scope>provided</scope> 56 </dependency> 57 </dependencies> 58 59 <!--構建項目需要的信息--> 60 <build> 61 <!--該元素設置了項目源碼目錄,當構建項目的時候,構建系統會編譯目錄里的源碼。該路徑是相對於pom.xml的相對路徑。--> 62 <sourceDirectory></sourceDirectory> 63 <!--該元素設置了項目腳本源碼目錄,該目錄和源碼目錄不同:絕大多數情況下,該目錄下的內容 會被拷貝到輸出目錄(因為腳本是被解釋的,而不是被編譯的)。--> 64 <scriptSourceDirectory></scriptSourceDirectory> 65 <!--該元素設置了項目單元測試使用的源碼目錄,當測試項目的時候,構建系統會編譯目錄里的源碼。該路徑是相對於pom.xml的相對路徑。--> 66 <testSourceDirectory></testSourceDirectory> 67 <!--被編譯過的應用程序class文件存放的目錄。--> 68 <outputDirectory></outputDirectory> 69 <!--被編譯過的測試class文件存放的目錄。--> 70 <testOutputDirectory></testOutputDirectory> 71 <!--使用來自該項目的一系列構建擴展--> 72 <extensions> 73 <!--描述使用到的構建擴展。--> 74 <extension> 75 <!--構建擴展的groupId--> 76 <groupId></groupId> 77 <!--構建擴展的artifactId--> 78 <artifactId></artifactId> 79 <!--構建擴展的版本--> 80 <version></version> 81 </extension> 82 </extensions> 83 84 <!--當項目沒有規定目標(Maven2 叫做階段)時的默認值--> 85 <defaultGoal></defaultGoal> 86 87 <!--這個元素描述了項目相關的所有資源路徑列表,例如和項目相關的屬性文件,這些資源被包含在最終的打包文件里。--> 88 <resources> 89 <!--這個元素描述了項目相關或測試相關的所有資源路徑--> 90 <resource> 91 <!--描述了資源的目標路徑。該路徑相對target/classes目錄(例如${project.build.outputDirectory})。舉個例子,如果你想資源在特定的包里(org.apache.maven.messages),你就必須該元素設置為org/apache/maven/messages。然而,如果你只是想把資源放到源碼目錄結構里,就不需要該配置。--> 92 <targetPath></targetPath> 93 <!--是否使用參數值代替參數名。參數值取自properties元素或者文件里配置的屬性,文件在filters元素里列出。--> 94 <filtering></filtering> 95 <!--描述存放資源的目錄,該路徑相對POM路徑--> 96 <directory></directory> 97 <!--包含的模式列表,例如**/*.xml.--> 98 <includes></includes> 99 <!--排除的模式列表,例如**/*.xml--> 100 <excludes></excludes> 101 </resource> 102 </resources> 103 104 <!--這個元素描述了單元測試相關的所有資源路徑,例如和單元測試相關的屬性文件。--> 105 <testResources> 106 <!--這個元素描述了測試相關的所有資源路徑,參見build/resources/resource元素的說明--> 107 <testResource> 108 <targetPath></targetPath> 109 <filtering></filtering> 110 <directory></directory> 111 <includes></includes> 112 <excludes></excludes> 113 </testResource> 114 </testResources> 115 116 <!--構建產生的所有文件存放的目錄--> 117 <directory></directory> 118 <!--產生的構件的文件名,默認值是${artifactId}-${version}。--> 119 <finalName></finalName> 120 <!--當filtering開關打開時,使用到的過濾器屬性文件列表--> 121 <filters></filters> 122 123 <!--子項目可以引用的默認插件信息。該插件配置項直到被引用時才會被解析或綁定到生命周期。給定插件的任何本地配置都會覆蓋這里的配置--> 124 <pluginManagement> 125 <!--使用的插件列表 。--> 126 <plugins> 127 <!--plugin元素包含描述插件所需要的信息。--> 128 <plugin> 129 <!--插件在倉庫里的group ID--> 130 <groupId/> 131 <!--插件在倉庫里的artifact ID--> 132 <artifactId/> 133 <!--被使用的插件的版本(或版本范圍)--> 134 <version/> 135 <!--是否從該插件下載Maven擴展(例如打包和類型處理器),由於性能原因,只有在真需要下載時,該元素才被設置成enabled。--> 136 <extensions/> 137 <!--在構建生命周期中執行一組目標的配置。每個目標可能有不同的配置。--> <executions> 138 <!--execution元素包含了插件執行需要的信息--> 139 <execution> 140 <!--執行目標的標識符,用於標識構建過程中的目標,或者匹配繼承過程中需要合並的執行目標--> 141 <id/> 142 <!--綁定了目標的構建生命周期階段,如果省略,目標會被綁定到源數據里配置的默認階段--> 143 <phase/> 144 <!--配置的執行目標--> 145 <goals/> 146 <!--配置是否被傳播到子POM--> 147 <inherited/> 148 <!--作為DOM對象的配置--> 149 <configuration/> 150 </execution> 151 </executions> 152 153 <!--項目引入插件所需要的額外依賴--> 154 <dependencies> 155 <!--參見dependencies/dependency元素--> 156 <dependency> 157 </dependency> 158 </dependencies> 159 160 <!--任何配置是否被傳播到子項目--> 161 <inherited/> 162 <!--作為DOM對象的配置--> 163 <configuration/> 164 </plugin> 165 </plugins> 166 </pluginManagement> 167 168 <!--使用的插件列表--> 169 <plugins> 170 <!--參見build/pluginManagement/plugins/plugin元素--> 171 <plugin> 172 <groupId/><artifactId/><version/><extensions/> 173 <executions> 174 <execution> 175 <id/><phase/><goals/><inherited/><configuration/> 176 </execution> 177 </executions> 178 <dependencies> 179 <!--參見dependencies/dependency元素--> 180 <dependency> 181 </dependency> 182 </dependencies> 183 <goals/><inherited/><configuration/> 184 </plugin> 185 </plugins> 186 </build> 187 188 <licenses>證書列表</licenses> 189 190 <!--描述項目所屬組織的各種屬性。Maven產生的文檔用--> 191 <organization> 192 <!--組織的全名--> 193 <name></name> 194 <!--組織主頁的URL--> 195 <url></url> 196 </organization> 197 198 <!--項目開發者列表--> 199 <developers> 200 <!--某個項目開發者的信息--> 201 <developer> 202 <!--SCM里項目開發者的唯一標識符--> 203 <id></id> 204 <!--項目開發者的全名--> 205 <name></name> 206 <!--項目開發者的email--> 207 <email></email> 208 <!--項目開發者的主頁的URL--> 209 <url></url> 210 211 <!--項目開發者在項目中扮演的角色,角色元素描述了各種角色--> 212 <roles> 213 <role></role> 214 <role></role> 215 </roles> 216 217 <!--項目開發者所屬組織--> 218 <organization></organization> 219 <!--項目開發者所屬組織的URL--> 220 <organizationUrl></organizationUrl> 221 <!--項目開發者屬性,如即時消息如何處理等--> 222 <properties> 223 <dept></dept> 224 </properties> 225 226 <!--項目開發者所在時區, -11到12范圍內的整數。--> 227 <timezone></timezone> 228 </developer> 229 </developers> 230 231 <!--項目的其他貢獻者列表--> 232 <contributors> 233 <!--項目的其他貢獻者。參見developers/developer元素--> 234 <contributor> 235 </contributor> 236 </contributors>