我们先看一个简单的例子:
- <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/maven-v4_0_0.xsd">
- <!-- maven model version -->
- <modelVersion>4.0.0</modelVersion>
- <!-- project group id & artifact id -->
- <groupId>com.freesoft.mvn-webapp</groupId>
- <artifactId>mvnwebapp</artifactId>
- <!-- packing type -->
- <packaging>war</packaging>
- <!-- version -->
- <version>1.0-SNAPSHOT</version>
- <name>mvnwebapp Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <dependencies>
- <!-- JUnit -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.11</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <build>
- <finalName>mvnwebapp</finalName>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <version>2.1</version>
- <configuration>
- <tomcat-url>http://localhost:8080/manager/html</tomcat-url>
- <server>tomcat_localtest</server>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- <properties>
- <struts.version>2.3.15</struts.version>
- <mysql.version>5.1.29</mysql.version>
- <hibernate.version>4.3.1.Final</hibernate.version>
- </properties>
- </project>
下面分段讲解。
1. 基本信息
modelVersion | Maven模块版本,目前我们一般都取值4.0.0 |
groupId | 整个系统的名称。 |
artifactId | 子模块名称。 |
packaging | 打包类型,可取值:jar,war等等,这个配置用于package的phase,具体可以参见package运行的时候启动的plugin,后面有机会我们会讲述如何配置打包的插件。 |
2. dependencies
依赖关系。实际上pom之间存在好三种关系:继承、依赖、聚合。我们先讲依赖,这也是最重要的关系。
groupId | 依赖项的groupId |
artifactId | 依赖项的artifactId |
version | 依赖项的版本 |
scope | 依赖项的适用范围:
|
exclusions | 排除项目中的依赖冲突时使用。 |
2.1 关于排除依赖冲突
我们可能经常会遇到这样一个问题:我们的项目有两个依赖项:A & B,而且A和B同时依赖了C,但不是同一个版本。那么我们怎么办呢?
2.1.1 添加检查插件
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-project-info-reports-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
然后运行:mvn project-info-reports:dependencies,来查看依赖项报告。
2.1.2 去除依赖项
如果我们需要在某个dependency中去除某个依赖项,直接这样即可:
- <!-- Struts2 -->
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-core</artifactId>
- <version>${struts.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.freemarker</groupId>
- <artifactId>freemarker</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
3. 继承
我的repository下面有个例子就直接拿来用了:
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>