博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(六)Maven之pom.xml文件简单说明
阅读量:7151 次
发布时间:2019-06-29

本文共 15783 字,大约阅读时间需要 52 分钟。

通过前面几部分知识,我们对maven已经有了初步的印象,就像Make的Makefile、Ant的build.xml一样,Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明依赖,等等。我们来看看maven中pom.xml文件主要标签的意思及其用法,来看一下pom.xml文件的结构:

 

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

 

我们可以看到maven的pom.xml文件结构非常清晰,把项目创建好后,我们基本上是在dependencies元素下添加一些子元素及plugins元素下添加一些插件,下面我们来介绍一下各个元素的含义。

1) project是所有pom.xml的根元素,并且在里面定义了命名空间和xsd元素。

2) modelVersion 当前pom模型的版本。

3) groupId定义当前maven项目隶属的实际项目,并会根据这给项目建立包结构。

4) artifactId定义项目中的某个模块名称,如果只有一个模块那就是项目的名称。

5) version 定义maven项目当前所处的版本号,默认0.0.1-SNAPSHOT为快照版本。

6) packaging定义maven项目的打包方式,可以是jar包、war包、pom。

7) dependencies元素底下就是加入依赖包的地方,那么我们从哪里查询依赖包呢,可以查询的地方比较多,我给出一个大家用得比较多的仓库:。

8) 每个dependency都是一个依赖包,依赖包也就是在dependency里面定义各个依赖包的坐标,这样maven就会从网上下载依赖包到你本地仓库中,有所不同的是dependency元素包含了一个子元素,这个就是对maven生命周期的一个说明,当然除了上面四个子元素外,还包含几个其他的元素。

   (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

博客地址:

本文出自博客园,欢迎大家加入博客园。

 

转载于:https://www.cnblogs.com/AlanLee/p/6139960.html

你可能感兴趣的文章
JAVA学习--Collections集合工具类使用
查看>>
Verilog学习----调试用系统任务和常用编译预处理语句
查看>>
个人知识管理工具 PinPKM
查看>>
es6 Proxy对象详解
查看>>
设计一个精致按钮
查看>>
为IE8添加EventListener系列方法支持
查看>>
数据库基本语法
查看>>
环境监测小助手V1.1的Windows版
查看>>
bzoj1046(HAOI2007)上升序列
查看>>
bzoj 1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂
查看>>
js获取本机内网IP地址和MAC地址
查看>>
7. Reverse Integer
查看>>
MySql错误处理(三)- 错误处理的例子
查看>>
Unity3D光照前置知识——Rendering Paths(渲染路径)及LightMode(光照模式)译解
查看>>
Linux多线程Pthread学习小结
查看>>
JVM性能调优入门
查看>>
关于BMP
查看>>
UML视频
查看>>
Jmeter性能测试 入门
查看>>
jmeter实现Http接口测试介绍
查看>>