1
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
4 4.0.0
5
6 com.freesoft.mvn-webapp
7 mvnwebapp
8
9 war
10
11 1.0-SNAPSHOT
12 mvnwebapp Maven Webapp
13 http://maven.apache.org
14
15
16
17
18
19
20 junit
21 junit
22 4.11
23 test
24
25
26
27
28
29
30 mvnwebapp
31
32
33
34 org.apache.tomcat.maven
35 tomcat7-maven-plugin
36 2.1
37
38 http://localhost:8080/manager/html
39 tomcat_localtest
40
41
42
43
44
45
46
47 2.3.15
48 5.1.29
49 4.3.1.Final
50
51
下面分段讲解。
1. 基本信息
modelVersion
Maven模块版本,目前我们一般都取值4.0.0
groupId
整个系统的名称。
artifactId
子模块名称。
packaging
打包类型,可取值:jar,war等等,这个配置用于package的phase,具体可以参见package运行的时候启动的plugin,后面有机会我们会讲述如何配置打包的插件。
2. dependencies
依赖关系。实际上pom之间存在好三种关系:继承、依赖、聚合。我们先讲依赖,这也是最重要的关系。
groupId
依赖项的groupId
artifactId
依赖项的artifactId
version
依赖项的版本
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
2
3
4 org.apache.maven.plugins
5 maven-project-info-reports-plugin
6
7
8
然后运行:mvn project-info-reports:dependencies,来查看依赖项报告。
2.1.2 去除依赖项
如果我们需要在某个dependency中去除某个依赖项,直接这样即可:
1
2
3 org.apache.struts
4 struts2-core
5 ${struts.version}
6
7
8 org.freemarker
9 freemarker
10
11
12
3. 继承
我的repository下面有个例子就直接拿来用了:
1 4.0.0
2
3 com.thoughtworks.xstream
4 xstream-parent
5 1.4.3
6
7 xstream
8 jar
9 XStream Core
其中的parent表示父pom是com.thoughtworks.xstream的xstream-parent的1.4.3版本。继承关系比较简单,这里不做过多介绍。
4. 聚合
我们可以通过一个大的项目来整合各个小的模块:
1
2 my-app
3
5. 属性
属性表述类似于EL表达式,ANT中也同样有,所以我们的properties字段可以这样使用:
1
2
3 mysql
4 mysql-connector-java
5 ${mysql.version}
6
6. 构建
6.1 plugin
Plugin的配置如下:
1
2
3
4 org.apache.tomcat.maven
5 tomcat7-maven-plugin
6 2.1
7
8 http://localhost:8080/manager/html
9 tomcat_localtest
10
11
12
13
我们可以看到同样要哟偶groupId、artifactId、version还有一些配置参数。
6.2 resource
指定你在Build时需要的资源文件:
1
2
3 WEB-INF/resource
4
5 false
6 ${basedir}/src/test/resources
7
8 include.xml
9
10
11 exclude.xml
12
13
14