(六)Maven之pom.xml文件簡單說明

經過前面幾部分知識,咱們對maven已經有了初步的印象,就像Make的Makefile、Ant的build.xml同樣,Maven項目的核心是pom.xml。POM(Project Object Model,項目對象模型)定義了項目的基本信息,用於描述項目如何構建,聲明依賴,等等。咱們來看看maven中pom.xml文件主要標籤的意思及其用法,來看一下pom.xml文件的結構:java

 

  1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2     <modelVersion>4.0.0</modelVersion>
  3 
  4     <groupId>com.uidp</groupId>
  5     <artifactId>UidpParent</artifactId>
  6     <version>0.0.1-SNAPSHOT</version>
  7     <packaging>pom</packaging>
  8 
  9     <!--當前項目的全稱(名稱)-->
 10     <name>UidpParent</name>
 11     <!--當前項目的主頁的URL-->
 12     <url>http://maven.apache.org</url>
 13 
 14     <!--配置經常使用屬性或定義一系列版本號-->
 15     <properties>
 16         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 17 
 18         <repository-url>http://192.168.0.70:8081/content/groups/public/</repository-url>
 19 
 20         <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
 21         <maven-war-plugin.version>2.4</maven-war-plugin.version>
 22         <maven-javadoc-plugin.version>2.9.1</maven-javadoc-plugin.version>
 23         <maven-release-plugin.version>2.4.1</maven-release-plugin.version>
 24         <maven-deploy-plugin.version>2.7</maven-deploy-plugin.version>
 25 
 26 
 27 
 28         <junit.version>4.11</junit.version>
 29         <oracle.version>10.2.0.4</oracle.version>
 30         <springframework.version>3.2.8.RELEASE</springframework.version>
 31         <mybatis.version>3.2.2</mybatis.version>
 32         <mybatis-spring.version>1.2.0</mybatis-spring.version>
 33         <mysql-driver.version>5.1.25</mysql-driver.version>
 34         <aspectjweaver.version>1.7.3</aspectjweaver.version>
 35 
 36         <commons-dbcp.version>1.4</commons-dbcp.version>
 37         <commons-pool.version>1.5.5</commons-pool.version>
 38         <commons-fileupload.version>1.2.2</commons-fileupload.version>
 39 
 40         <log4j.version>1.2.17</log4j.version>
 41         <slf4j-api.version>1.7.5</slf4j-api.version>
 42         <slf4j-log4j12.version>1.7.5</slf4j-log4j12.version>
 43 
 44         <freemarker.version>2.3.19</freemarker.version>
 45 
 46         <jackson-core.version>2.5.0</jackson-core.version>
 47         <jackson-mapper-asl.version>1.9.7</jackson-mapper-asl.version>
 48 
 49         <javax.servlet-api.version>3.0.1</javax.servlet-api.version>
 50         <jsp-api.version>2.2</jsp-api.version>
 51         <kryo.version>1.04</kryo.version>
 52         <snakeyaml.version>1.8</snakeyaml.version>
 53         <jedis.version>2.0.0</jedis.version>
 54         <commons-lang.version>2.6</commons-lang.version>
 55 
 56 
 57         <mockito-core.version>1.8.5</mockito-core.version>
 58         <powermock-core.version>1.4.9</powermock-core.version>
 59         <powermock-api-mockito.version>1.4.9</powermock-api-mockito.version>
 60         <powermock-module-junit4.version>1.4.9</powermock-module-junit4.version>
 61 
 62 
 63     </properties>
 64 
 65     <!--依賴管理-->
 66     <dependencyManagement>
 67         <dependencies>
 68 
 69             <dependency>
 70                 <groupId>junit</groupId>
 71                 <artifactId>junit</artifactId>
 72                 <version>${junit.version}</version>
 73                 <scope>test</scope>
 74             </dependency>
 75 
 76             <!-- spring jar begin -->
 77             <dependency>
 78                 <groupId>org.springframework</groupId>
 79                 <artifactId>spring-web</artifactId>
 80                 <version>${springframework.version}</version>
 81             </dependency>
 82 
 83             <dependency>
 84                 <groupId>org.springframework</groupId>
 85                 <artifactId>spring-webmvc</artifactId>
 86                 <version>${springframework.version}</version>
 87             </dependency>
 88 
 89             <dependency>
 90                 <groupId>org.springframework</groupId>
 91                 <artifactId>spring-beans</artifactId>
 92                 <version>${springframework.version}</version>
 93             </dependency>
 94 
 95             <dependency>
 96                 <groupId>org.springframework</groupId>
 97                 <artifactId>spring-context</artifactId>
 98                 <version>${springframework.version}</version>
 99             </dependency>
100 
101             <dependency>
102                 <groupId>org.springframework</groupId>
103                 <artifactId>spring-context-support</artifactId>
104                 <version>${springframework.version}</version>
105             </dependency>
106 
107             <dependency>
108                 <groupId>org.springframework</groupId>
109                 <artifactId>spring-core</artifactId>
110                 <version>${springframework.version}</version>
111             </dependency>
112 
113             <dependency>
114                 <groupId>org.springframework</groupId>
115                 <artifactId>spring-jdbc</artifactId>
116                 <version>${springframework.version}</version>
117             </dependency>
118 
119             <dependency>
120                 <groupId>org.springframework</groupId>
121                 <artifactId>spring-tx</artifactId>
122                 <version>${springframework.version}</version>
123             </dependency>
124 
125             <dependency>
126                 <groupId>org.springframework</groupId>
127                 <artifactId>spring-test</artifactId>
128                 <version>${springframework.version}</version>
129             </dependency>
130 
131             <dependency>
132                 <groupId>org.springframework</groupId>
133                 <artifactId>spring-expression</artifactId>
134                 <version>${springframework.version}</version>
135             </dependency>
136 
137             <dependency>
138                 <groupId>org.springframework</groupId>
139                 <artifactId>spring-aop</artifactId>
140                 <version>${springframework.version}</version>
141             </dependency>
142             <!-- spring jar end -->
143 
144             <dependency>
145                 <groupId>org.mybatis</groupId>
146                 <artifactId>mybatis</artifactId>
147                 <version>${mybatis.version}</version>
148             </dependency>
149 
150             <dependency>
151                 <groupId>org.mybatis</groupId>
152                 <artifactId>mybatis-spring</artifactId>
153                 <version>${mybatis-spring.version}</version>
154             </dependency>
155 
156             <dependency>
157                 <groupId>mysql</groupId>
158                 <artifactId>mysql-connector-java</artifactId>
159                 <version>${mysql-driver.version}</version>
160             </dependency>
161 
162             <dependency>
163                 <groupId>com.oracle</groupId>
164                 <artifactId>ojdbc14</artifactId>
165                 <version>${oracle.version}</version>
166             </dependency>
167 
168             <dependency>
169                 <groupId>org.aspectj</groupId>
170                 <artifactId>aspectjweaver</artifactId>
171                 <version>${aspectjweaver.version}</version>
172             </dependency>
173 
174 
175             <dependency>
176                 <groupId>commons-dbcp</groupId>
177                 <artifactId>commons-dbcp</artifactId>
178                 <version>${commons-dbcp.version}</version>
179             </dependency>
180             <dependency>
181                 <groupId>commons-pool</groupId>
182                 <artifactId>commons-pool</artifactId>
183                 <version>${commons-pool.version}</version>
184             </dependency>
185             <dependency>
186                 <groupId>commons-fileupload</groupId>
187                 <artifactId>commons-fileupload</artifactId>
188                 <version>${commons-fileupload.version}</version>
189             </dependency>
190 
191 
192             <!-- log jar -->
193             <dependency>
194                 <groupId>log4j</groupId>
195                 <artifactId>log4j</artifactId>
196                 <version>${log4j.version}</version>
197             </dependency>
198             <dependency>
199                 <groupId>org.slf4j</groupId>
200                 <artifactId>slf4j-api</artifactId>
201                 <version>${slf4j-api.version}</version>
202             </dependency>
203             <dependency>
204                 <groupId>org.slf4j</groupId>
205                 <artifactId>slf4j-log4j12</artifactId>
206                 <version>${slf4j-log4j12.version}</version>
207             </dependency>
208 
209             <!-- freemarker -->
210             <dependency>
211                 <groupId>org.freemarker</groupId>
212                 <artifactId>freemarker</artifactId>
213                 <version>${freemarker.version}</version>
214             </dependency>
215 
216 
217             <!-- jackson -->
218             <dependency>
219                 <groupId>com.fasterxml.jackson.core</groupId>
220                 <artifactId>jackson-core</artifactId>
221                 <version>${jackson-core.version}</version>
222             </dependency>
223             <dependency>
224                 <groupId>org.codehaus.jackson</groupId>
225                 <artifactId>jackson-mapper-asl</artifactId>
226                 <version>${jackson-mapper-asl.version}</version>
227             </dependency>
228 
229             <dependency>
230                 <groupId>javax.servlet</groupId>
231                 <artifactId>javax.servlet-api</artifactId>
232                 <version>${javax.servlet-api.version}</version>
233                 <scope>provided</scope>
234             </dependency>
235 
236             <dependency>
237                 <groupId>javax.servlet.jsp</groupId>
238                 <artifactId>jsp-api</artifactId>
239                 <version>${jsp-api.version}</version>
240                 <scope>provided</scope>
241             </dependency>
242 
243             <dependency>
244                 <groupId>com.googlecode</groupId>
245                 <artifactId>kryo</artifactId>
246                 <version>${kryo.version}</version>
247             </dependency>
248 
249             <dependency>
250                 <groupId>org.yaml</groupId>
251                 <artifactId>snakeyaml</artifactId>
252                 <version>${snakeyaml.version}</version>
253             </dependency>
254 
255             <dependency>
256                 <groupId>redis.clients</groupId>
257                 <artifactId>jedis</artifactId>
258                 <version>${jedis.version}</version>
259             </dependency>
260 
261             <dependency>
262                 <groupId>commons-lang</groupId>
263                 <artifactId>commons-lang</artifactId>
264                 <version>${commons-lang.version}</version>
265             </dependency>
266 
267 
268             <dependency>
269                 <groupId>org.mockito</groupId>
270                 <artifactId>mockito-core</artifactId>
271                 <version>${mockito-core.version}</version>
272                 <scope>test</scope>
273             </dependency>
274 
275             <dependency>
276                 <groupId>org.powermock</groupId>
277                 <artifactId>powermock-core</artifactId>
278                 <version>${powermock-core.version}</version>
279                 <scope>test</scope>
280             </dependency>
281 
282             <dependency>
283                 <groupId>org.powermock</groupId>
284                 <artifactId>powermock-api-mockito</artifactId>
285                 <version>${powermock-api-mockito.version}</version>
286                 <scope>test</scope>
287             </dependency>
288 
289             <dependency>
290                 <groupId>org.powermock</groupId>
291                 <artifactId>powermock-module-junit4</artifactId>
292                 <version>${powermock-module-junit4.version}</version>
293                 <scope>test</scope>
294             </dependency>
295 
296 
297         </dependencies>
298     </dependencyManagement>
299     
300     <distributionManagement>
301         <repository>
302             <id>releases</id>
303             <name>public</name>
304             <url>http://59.50.95.66:8081/nexus/content/repositories/releases</url>
305         </repository>
306         <snapshotRepository>
307             <id>snapshots</id>
308             <name>Snapshots</name>
309             <url>http://59.50.95.66:8081/nexus/content/repositories/snapshots</url>
310         </snapshotRepository>
311     </distributionManagement>
312     
313     
314     <!--構建管理-->
315     <build>
316         <plugins>
317 
318             <plugin>
319                 <groupId>org.apache.maven.plugins</groupId>
320                 <artifactId>maven-compiler-plugin</artifactId>
321                 <version>${maven-compiler-plugin.version}</version>
322                 <configuration>
323                     <source>1.7</source> <!-- 源代碼使用的開發版本 -->
324                     <target>1.7</target> <!-- 須要生成的目標class文件的編譯版本 -->
325                 </configuration>
326             </plugin>
327 
328             <plugin>
329                 <groupId>org.apache.maven.plugins</groupId>
330                 <artifactId>maven-javadoc-plugin</artifactId>
331                 <version>${maven-javadoc-plugin.version}</version>
332             </plugin>
333 
334 
335             <plugin>
336                 <groupId>org.apache.maven.plugins</groupId>
337                 <artifactId>maven-release-plugin</artifactId>
338                 <version>${maven-release-plugin.version}</version>
339             </plugin>
340 
341             <plugin>
342                 <groupId>org.apache.maven.plugins</groupId>
343                 <artifactId>maven-deploy-plugin</artifactId>
344                 <version>${maven-deploy-plugin.version}</version>
345                 <configuration>
346                     <updateReleaseInfo>true</updateReleaseInfo>
347                 </configuration>
348             </plugin>
349 
350         </plugins>
351     </build>
352 
353 
354     <pluginRepositories>
355         <pluginRepository>
356             <id>nexus</id>
357             <name>nexus</name>
358             <url>${repository-url}</url>
359             <releases>
360                 <enabled>true</enabled>
361             </releases>
362             <snapshots>
363                 <enabled>true</enabled>
364             </snapshots>
365         </pluginRepository>
366     </pluginRepositories>
367 
368     
369 </project>

 

咱們能夠看到maven的pom.xml文件結構很是清晰,把項目建立好後,咱們基本上是在dependencies元素下添加一些子元素及plugins元素下添加一些插件,下面咱們來介紹一下各個元素的含義。mysql

1) project是全部pom.xml的根元素,而且在裏面定義了命名空間和xsd元素。web

2) modelVersion 當前pom模型的版本。redis

3) groupId定義當前maven項目隸屬的實際項目,並會根據這給項目創建包結構。spring

4) artifactId定義項目中的某個模塊名稱,若是隻有一個模塊那就是項目的名稱。sql

5) version 定義maven項目當前所處的版本號,默認0.0.1-SNAPSHOT爲快照版本。express

6) packaging定義maven項目的打包方式,能夠是jar包、war包、pom。apache

7) dependencies元素底下就是加入依賴包的地方,那麼咱們從哪裏查詢依賴包呢,能夠查詢的地方比較多,我給出一個你們用得比較多的倉庫:http://mvnrepository.comapi

8) 每一個dependency都是一個依賴包,依賴包也就是在dependency裏面定義各個依賴包的座標,這樣maven就會從網上下載依賴包到你本地倉庫中,有所不一樣的是dependency元素包含了一個子元素,這個就是對maven生命週期的一個說明,固然除了上面四個子元素外,還包含幾個其餘的元素。mybatis

   (1)type說明依賴的類型

   (2)optional標記依賴是否可選

   (3)exclusions 用來排斥傳遞依賴

   咱們具體來看看這個結構:

   <dependency>

     <groupId>實際項目</groupId>

     <artifactId>模塊</artifactId>

     <version>版本</version>

     <type>依賴類型</type>

     <scope>依賴範圍</scope>

     <optional>依賴是否可選</optional>

     <!—主要用於排除傳遞性依賴-->

     <exclusions>

       <exclusion>

         <groupId>…</groupId>

         <artifactId>…</artifactId>

       </exclusion>

     </exclusions>

   </dependency>

 

Maven是經過groupId、artifactId、version這三相似於座標的元素來肯定惟一性的,所以這三個元素對於每一個依賴大可能是必須的,後面會詳細介紹依賴、聚合、繼承等知識點。

 

沒有任何實際的Java代碼,咱們可以定義一個Maven項目的POM,這體現了Maven的一大優勢,它能讓項目對象模型最大程度地與實際代碼相獨立,咱們能夠稱之爲解耦。這在很大程度上避免了Java代碼和POM代碼的相互影響。只要咱們定義的POM穩定後,平常的Java代碼開發工做中基本不會涉及到POM的修改。

 

可愛博主:AlanLee

博客地址:http://www.cnblogs.com/AlanLee

本文出自博客園,歡迎你們加入博客園。

相關文章
相關標籤/搜索