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