Java中Maven的pom.xml解析


一.什么是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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM