Maven之pom.xml详解

来源:互联网 发布:转换视频格式的软件 编辑:程序博客网 时间:2024/05/16 06:46
转载于:http://www.cnblogs.com/sharpest/p/5969566.html

我们先看一个简单的例子:

复制代码
 1 <project xmlns="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     <!-- maven model version --> 4     <modelVersion>4.0.0</modelVersion> 5     <!-- project group id & artifact id --> 6     <groupId>com.freesoft.mvn-webapp</groupId> 7     <artifactId>mvnwebapp</artifactId> 8     <!-- packing type --> 9     <packaging>war</packaging>10     <!-- version -->11     <version>1.0-SNAPSHOT</version>12     <name>mvnwebapp Maven Webapp</name>13     <url>http://maven.apache.org</url>14 15 16     <dependencies>17 18         <!-- JUnit -->19         <dependency>20             <groupId>junit</groupId>21             <artifactId>junit</artifactId>22             <version>4.11</version>23             <scope>test</scope>24         </dependency>25 26     </dependencies>27 28 29     <build>30         <finalName>mvnwebapp</finalName>31         <pluginManagement>32             <plugins>33                 <plugin>34                     <groupId>org.apache.tomcat.maven</groupId>35                     <artifactId>tomcat7-maven-plugin</artifactId>36                     <version>2.1</version>37                     <configuration>38                         <tomcat-url>http://localhost:8080/manager/html</tomcat-url>39                         <server>tomcat_localtest</server>40                     </configuration>41                 </plugin>42             </plugins>43         </pluginManagement>44     </build>45 46     <properties>47         <struts.version>2.3.15</struts.version>48         <mysql.version>5.1.29</mysql.version>49         <hibernate.version>4.3.1.Final</hibernate.version>50     </properties>51 </project>
复制代码

 

下面分段讲解。


1. 基本信息

 

modelVersionMaven模块版本,目前我们一般都取值4.0.0groupId整个系统的名称。artifactId子模块名称。packaging打包类型,可取值:jar,war等等,这个配置用于package的phase,具体可以参见package运行的时候启动的plugin,后面有机会我们会讲述如何配置打包的插件。

 

2. dependencies

依赖关系。实际上pom之间存在好三种关系:继承、依赖、聚合。我们先讲依赖,这也是最重要的关系。

 

groupId依赖项的groupIdartifactId依赖项的artifactIdversion依赖项的版本scope依赖项的适用范围:
  • compile,缺省值,适用于所有阶段,会随着项目一起发布。
  • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
  • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
  • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
之前例子里的junit就只用在了test中。exclusions排除项目中的依赖冲突时使用。

 

2.1 关于排除依赖冲突

我们可能经常会遇到这样一个问题:我们的项目有两个依赖项:A & B,而且A和B同时依赖了C,但不是同一个版本。那么我们怎么办呢?


2.1.1 添加检查插件

复制代码
1 <reporting>2         <plugins>3             <plugin>4                 <groupId>org.apache.maven.plugins</groupId>5                 <artifactId>maven-project-info-reports-plugin</artifactId>6             </plugin>7         </plugins>8     </reporting>
复制代码


然后运行:mvn project-info-reports:dependencies,来查看依赖项报告。


2.1.2 去除依赖项

如果我们需要在某个dependency中去除某个依赖项,直接这样即可:

复制代码
 1 <!-- Struts2 --> 2         <dependency> 3             <groupId>org.apache.struts</groupId> 4             <artifactId>struts2-core</artifactId> 5             <version>${struts.version}</version> 6             <exclusions> 7                 <exclusion> 8                     <groupId>org.freemarker</groupId> 9                     <artifactId>freemarker</artifactId>10                 </exclusion>11             </exclusions>12         </dependency>
复制代码

3. 继承

我的repository下面有个例子就直接拿来用了:

复制代码
1 <modelVersion>4.0.0</modelVersion>2   <parent>3     <groupId>com.thoughtworks.xstream</groupId>4     <artifactId>xstream-parent</artifactId>5     <version>1.4.3</version>6   </parent>7   <artifactId>xstream</artifactId>8   <packaging>jar</packaging>9   <name>XStream Core</name>
复制代码

其中的parent表示父pom是com.thoughtworks.xstream的xstream-parent的1.4.3版本。继承关系比较简单,这里不做过多介绍。


4. 聚合

我们可以通过一个大的项目来整合各个小的模块:

1 <modules>2         <module>my-app</module>3     </modules>

5. 属性

属性表述类似于EL表达式,ANT中也同样有,所以我们的properties字段可以这样使用:

1         <!-- mysql -->2         <dependency>3             <groupId>mysql</groupId>4             <artifactId>mysql-connector-java</artifactId>5             <version>${mysql.version}</version>6         </dependency>

6. 构建

6.1 plugin

Plugin的配置如下:

复制代码
 1 <pluginManagement> 2             <plugins> 3                 <plugin> 4                     <groupId>org.apache.tomcat.maven</groupId> 5                     <artifactId>tomcat7-maven-plugin</artifactId> 6                     <version>2.1</version> 7                     <configuration> 8                         <tomcat-url>http://localhost:8080/manager/html</tomcat-url> 9                         <server>tomcat_localtest</server>10                     </configuration>11                 </plugin>12             </plugins>13         </pluginManagement>
复制代码

我们可以看到同样要哟偶groupId、artifactId、version还有一些配置参数。


6.2 resource

指定你在Build时需要的资源文件:

复制代码
 1 <resources> 2             <resource> 3                 <targetPath>WEB-INF/resource</targetPath> 4                 <!-- 不对文件中的表达式进行处理 --> 5                 <filtering>false</filtering> 6                 <directory>${basedir}/src/test/resources</directory> 7                 <includes> 8                     <include>include.xml</include> 9                 </includes>10                 <excludes>11                     <exclude>exclude.xml</exclude>12                 </excludes>13             </resource>14         </resources>
复制代码

 


 

原创粉丝点击