索引:
参看代码 GitHub:
一、Intelij IDEA 中构建 maven 项目及模块
1.新建 maven 项目,在IDE中的菜单位置
2.项目中新建模块在IDE中的菜单位置
3.整个项目的结构
二、Maven 模块及模块关系要点讲解
1.solution/pom.xml
lm.solution
solution
1.0-SNAPSHOT
讲解:
groupId :模块项目归属组织名称
artifactId:项目内模块名称
version:模块的版本号
这三个属性唯一的标识了一个模块,也被称为 maven 坐标。
webapi
... ...
讲解:
因为 solution 这个模块是做为项目父模块存在的,在 modules 标签内就指明了该模块都包含哪些子模块:
webapi、web、common、service、mapper、pojo、console、webservice。
pom
讲解:
因为 solution 模块将包含多个子模块,所以这里的打包方式选择 pom 值。
4.3.13.RELEASE
... ...
讲解:
在父模块中定义的 properties maven 属性变量,除了在本模块中可直接引用外,在所有的子模块中也可以直接被引用,
也就是说在子模块中就可以不必在重新定义 maven的属性变量了,如 spring.version 这个属性变量,在所有模块及子模块中
可以被直接使用 ${spring.version} 。
junit
junit
... ...
... ...
讲解:
在父模块中定义的类库依赖,除了在父模块中会做引用以外,在所有子模块中也都会做自动的引用,
所以在子模块中就不必添加 dependencies 中的依赖了,如 junit 这个第三方类库,在子模块中 maven
会自动继承父模块的 junit 依赖,子模块中就不必再添加 junit 的类库依赖了。
org.mybatis
mybatis
${mybatis.version}
... ...
讲解:
有的类库依赖,在部分子模块中需要,在部分子模块中不需要,此时,就可将依赖关系放到此节点中,
例如:mybatis 这个第三方 orm 库,在 pojo(仅是映射关系的实体层) 子模块中没有依赖,而在 mapper(orm 存储仓层) 这个
子模块中就是关键依赖。
org.apache.maven.plugins
maven-compiler-plugin
... ...
org.apache.tomcat.maven
tomcat8-maven-plugin
... ...
讲解:
这里 plugins 与 pluginManagement 可参看上面讲解到的 dependencies 与 dependencyManagement 的作用,他们作用
类似,因为每个模块都需要 maven-compiler-plugin 编译插件,所以直接将其放到父模块的 plugins 标签内,而 tomcat8-maven-plugin
插件只有 web 子模块需要,所以将其放到 pluginManagement 标签中。
solution/pom.xml
1
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3 4.0.0
4
5 lm.solution
6 solution
7 1.0-SNAPSHOT
8
9 webapi
10 web
11 common
12 service
13 mapper
14 pojo
15 console
16 webservice
17
18 pom
19
20 solution
21 http://maven.apache.org
22
23
24
25 UTF-8
26
27 4.3.13.RELEASE
28
29 1.7.7
30 1.2.17
31
32 2.9.4
33
34 4.12
35
36 1.8.13
37
38 3.1
39
40 3.4.5
41
42 1.3.1
43
44 5.1.34
45
46 1.0.5
47
48 3.0.1
49
50 2.2
51
52 1.2
53
54 2.1
55
56 1.9.13
57
58 1.6.1
59
60 2.6.9
61
62 2.0.4
63
64 1.3.1
65
66 2.4
67
68 1.9
69
70 4.0
71
72 1.7.0
73
74 2.3.19
75
76 3.9
77
78 4.4.8
79 4.5.4
80
81 2.3.0
82
83 2.9.0
84
85 5.1.2
86
87 1.2.46
88
89 1.0
90
91
92
93
94
95 junit
96 junit
97 RELEASE
98
99 test
100
101
102
103 org.springframework
104 spring-test
105 ${spring.version}
106 test
107
108
109
110 org.springframework
111
112 spring-context
113 ${spring.version}
114
115
116 org.springframework
117 spring-context-support
118 ${spring.version}
119
120
121 org.springframework
122 spring-aspects
123 ${spring.version}
124
125
126 org.springframework
127 spring-tx
128 ${spring.version}
129
130
131 org.springframework
132 spring-jdbc
133 ${spring.version}
134
135
136
137 org.aspectj
138 aspectjrt
139 ${aspectj.version}
140
141
142 org.aspectj
143 aspectjweaver
144 ${aspectj.version}
145
146
147
148 com.fasterxml.jackson.core
149 jackson-annotations
150 ${jackson.version}
151
152
153 com.fasterxml.jackson.core
154 jackson-databind
155 ${jackson.version}
156
157
158 com.fasterxml.jackson.core
159 jackson-core
160 ${jackson.version}
161
162
163 com.fasterxml.jackson.dataformat
164 jackson-dataformat-xml
165 ${jackson.version}
166
167
168
169 log4j
170 log4j
171 ${log4j.version}
172
173
174 org.slf4j
175 slf4j-api
176 ${slf4j.version}
177
178
179 org.slf4j
180 slf4j-log4j12
181 ${slf4j.version}
182
183
184
185
186
187
188
189 org.springframework
190 spring-web
191 ${spring.version}
192
193
194 org.springframework
195 spring-webmvc
196 ${spring.version}
197
198
199
200 cglib
201 cglib
202 ${cglib.version}
203
204
205
206 org.mybatis
207 mybatis
208 ${mybatis.version}
209
210
211 org.mybatis
212 mybatis-spring
213 ${mybatisSpring.version}
214
215
216
217 mysql
218 mysql-connector-java
219 ${mysql.version}
220
221
222
223 com.alibaba
224 druid
225 ${druid.version}
226
227
228
229
230 javax.servlet
231 javax.servlet-api
232 ${javaxServlet.version}
233 provided
234
235
236 javax.servlet.jsp
237 jsp-api
238 ${jspApi.version}
239 provided
240
241
242 javax.servlet
243 jstl
244 ${jstl.version}
245
246
247
248 net.sf.json-lib
249 json-lib
250 ${jsonLib.version}
251 jdk15
252
253
254
255 org.codehaus.jackson
256 jackson-core-asl
257 ${jacksonOld.version}
258
259
260 org.codehaus.jackson
261 jackson-mapper-asl
262 ${jacksonOld.version}
263
264
265
266 dom4j
267 dom4j
268 ${dom4j.version}
269
270
271
272 net.sf.ehcache
273 ehcache-core
274 ${ehcacheCore.version}
275
276
277 net.sf.ehcache
278 ehcache-web
279 ${ehcacheWeb.version}
280
281
282
283 commons-fileupload
284 commons-fileupload
285 ${commonsFileupload.version}
286
287
288 commons-io
289 commons-io
290 ${commonsIo.version}
291
292
293 commons-codec
294 commons-codec
295 ${commonsCodec.version}
296
297
298 org.apache.commons
299 commons-collections4
300 ${commonsCollections4.version}
301
302
303 org.apache.commons
304 commons-lang3
305 3.3.2
306
307
308
309 commons-beanutils
310 commons-beanutils
311 ${commonsBeanutils.version}
312
313
314 commons-logging
315 commons-logging
316
317
318
319
320
321 org.freemarker
322 freemarker
323 ${freemarker.version}
324
325
326
327 org.apache.poi
328 poi
329 ${poi.version}
330
331
332 org.apache.poi
333 poi-ooxml
334 ${poi.version}
335
336
337
338 org.apache.httpcomponents
339 httpcore
340 ${httpcore.version}
341
342
343 org.apache.httpcomponents
344 httpclient
345 ${httpclient.version}
346
347
348
349 com.sun.xml.ws
350 jaxws-rt
351 ${jaxwsRt.version}
352
353
354
355 redis.clients
356 jedis
357 ${jedis.version}
358
359
360
361 com.rabbitmq
362 amqp-client
363 ${amqpClient.version}
364
365
366
367 com.alibaba
368 fastjson
369 ${fastjson.version}
370
371
372
373 javax.annotation
374 jsr250-api
375 ${jsr250.version}
376
377
378
379
380
381
382
383
384 org.apache.maven.plugins
385 maven-compiler-plugin
386 3.2
387
388 1.8
389 1.8
390 UTF-8
391
392
393
394
395
396
397
398
399 org.apache.tomcat.maven
400 tomcat8-maven-plugin
401 3.0-r1756463
402
403
404
405
406
407
2.pojo/pom.xml
这个模块是做为实体层的。
重复内容不在讲解,参考上文的说明。
solution
lm.solution
... ...
讲解:
因为 pojo 模块是 solution 模块的子模块,所以要在 parent 标签内指明父模块是 solution 模块的坐标。
jar
讲解:
因为这里 pojo 模块是做为其它模块依赖的类库使用的,所以打包方式为 jar 值。
pojo/pom.xml
1
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
4 solution
5 lm.solution
6 1.0-SNAPSHOT
7
8 4.0.0
9
10 lm.solution
11 pojo
12 1.0-SNAPSHOT
13 jar
14
15 pojo
16 http://maven.apache.org
17
18
19 UTF-8
20
21
22
23
24
25
26
27
28
3.mapper/pom.xml
这个模块是做为存储仓层的。
重复内容不在讲解,参考上文的说明。
lm.solution
pojo
1.0-SNAPSHOT
... ...
org.mybatis
mybatis
... ...
讲解:
因为 mapper 模块依赖 pojo 模块,所以这里引入 pojo 的依赖坐标,
又由于该模块需要第三方mybatis类库,所以 这里引入mybatis 的 maven 坐标,
上文中 solution 父模块 已经在 dependencyManagement 指明了,所以这里就不用再指明 version 了。
mapper/pom.xml
1
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
4 solution
5 lm.solution
6 1.0-SNAPSHOT
7
8 4.0.0
9
10 lm.solution
11 mapper
12 1.0-SNAPSHOT
13 jar
14
15 mapper
16 http://maven.apache.org
17
18
19 UTF-8
20
21
22
23
24
25 lm.solution
26 pojo
27 1.0-SNAPSHOT
28
29
30
31
32 org.mybatis
33 mybatis
34
35
36 mysql
37 mysql-connector-java
38
39
40 com.alibaba
41 druid
42 runtime
43
44
45
4.common/pom.xml
这个模块是做为公共类库模块的。
重复内容不在讲解,参考上文的说明。
1
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
4 solution
5 lm.solution
6 1.0-SNAPSHOT
7
8 4.0.0
9
10 lm.solution
11 common
12 1.0-SNAPSHOT
13 jar
14
15 common
16 http://maven.apache.org
17
18
19
20
21 lm.solution
22 pojo
23 1.0-SNAPSHOT
24
25
26
27
28
29 org.springframework
30 spring-webmvc
31
32
33
34 org.apache.poi
35 poi
36
37
38
39 org.apache.poi
40 poi-ooxml
41
42
43
44 javax.servlet
45 javax.servlet-api
46 provided
47
48
49
50 org.apache.httpcomponents
51 httpcore
52
53
54 org.apache.httpcomponents
55 httpclient
56
57
58
59 org.apache.commons
60 commons-collections4
61
62
63
64 redis.clients
65 jedis
66
67
68
69 com.rabbitmq
70 amqp-client
71
72
73
5.service/pom.xml
这个模块是做为服务类库模块的。
重复内容不在讲解,参考上文的说明。
1
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
4 solution
5 lm.solution
6 1.0-SNAPSHOT
7
8 4.0.0
9
10 lm.solution
11 service
12 1.0-SNAPSHOT
13 jar
14
15 service
16 http://maven.apache.org
17
18
19 UTF-8
20
21
22
23
24
25 lm.solution
26 mapper
27 1.0-SNAPSHOT
28
29
30
31
32
33
6.console/pom.xml
这个模块是做为各种测试用的模块。
重复内容不在讲解,参考上文的说明。
1
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
4 solution
5 lm.solution
6 1.0-SNAPSHOT
7
8 4.0.0
9
10 lm.solution
11 console
12 1.0-SNAPSHOT
13 jar
14
15 console
16 http://maven.apache.org
17
18
19 UTF-8
20
21
22
23
24
25 lm.solution
26 pojo
27 1.0-SNAPSHOT
28
29
30 lm.solution
31 common
32 1.0-SNAPSHOT
33
34
35 lm.solution
36 service
37 1.0-SNAPSHOT
38
39
40
41
42
43 org.codehaus.jackson
44 jackson-core-asl
45
46
47 org.codehaus.jackson
48 jackson-mapper-asl
49
50
51 com.rabbitmq
52 amqp-client
53
54
55
56 com.alibaba
57 fastjson
58
59
60
61 commons-io
62 commons-io
63
64
65
66 javax.annotation
67 jsr250-api
68
69
70
71 javax.servlet
72 javax.servlet-api
73
74
75
76
77 junit
78 junit
79 RELEASE
80
81
82 org.springframework
83 spring-test
84 4.3.13.RELEASE
85
86
87
88
89
7.web/pom.xml
这个模块是做为 web 站点的。
重复内容不在讲解,参考上文的说明。
war
讲解:
因为这模块在编译后是部署到 tomcat 容器的,所以这里采用的打包方式是 war 值。
web/pom.xml
1
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
4 solution
5 lm.solution
6 1.0-SNAPSHOT
7
8 4.0.0
9 lm.solution
10 web
11 war
12 1.0-SNAPSHOT
13 web Maven Webapp
14 http://maven.apache.org
15
16
17
18 lm.solution
19 service
20 1.0-SNAPSHOT
21
22
23 lm.solution
24 common
25 1.0-SNAPSHOT
26
27
28
29
30
31 org.springframework
32
33 spring-webmvc
34
35
36
37 cglib
38 cglib
39
40
41
42 org.mybatis
43 mybatis
44
45
46
47 org.mybatis
48 mybatis-spring
49
50
51
52 mysql
53 mysql-connector-java
54
55
56
57 com.alibaba
58 druid
59
60
61
62
63 javax.servlet
64 javax.servlet-api
65 provided
66
67
68 javax.servlet.jsp
69 jsp-api
70 provided
71
72
73 javax.servlet
74 jstl
75
76
77
78 net.sf.json-lib
79 json-lib
80 jdk15
81
82
83
84 dom4j
85 dom4j
86
87
88
89 net.sf.ehcache
90 ehcache-core
91
92
93 net.sf.ehcache
94 ehcache-web
95
96
97
98 commons-fileupload
99 commons-fileupload
100
101
102 commons-io
103 commons-io
104
105
106
107 commons-codec
108 commons-codec
109
110
111 org.apache.commons
112 commons-collections4
113
114
115 org.apache.commons
116 commons-lang3
117
118
119
120 commons-beanutils
121 commons-beanutils
122
123
124 commons-logging
125 commons-logging
126
127
128
129
130
131 org.freemarker
132 freemarker
133
134
135
136 org.apache.httpcomponents
137 httpcore
138
139
140 org.apache.httpcomponents
141 httpclient
142
143
144
145 redis.clients
146 jedis
147
148
149
150 com.rabbitmq
151 amqp-client
152
153
154
155 com.alibaba
156 fastjson
157
158
159
160 web
161
162
163
164 org.apache.tomcat.maven
165 tomcat8-maven-plugin
166
167
168
169
8.webapi/pom.xml
这个模块是做为 Restful API 站点的。
重复内容不在讲解,参考上文的说明。
1
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
4
5 solution
6 lm.solution
7 1.0-SNAPSHOT
8
9
10 4.0.0
11 lm.solution
12 webapi
13 war
14 1.0-SNAPSHOT
15 webapi Maven Webapp
16 http://maven.apache.org
17
18
19
20
21 lm.solution
22 service
23 1.0-SNAPSHOT
24
25
26 lm.solution
27 common
28 1.0-SNAPSHOT
29
30
31
32
33 cglib
34 cglib
35
36
37
38
39 org.mybatis
40 mybatis-spring
41
42
43 javax.servlet
44 javax.servlet-api
45 provided
46
47
48 javax.servlet.jsp
49 jsp-api
50 provided
51
52
53 javax.servlet
54 jstl
55
56
57
58 net.sf.json-lib
59 json-lib
60 jdk15
61
62
63
64 dom4j
65 dom4j
66
67
68
69 net.sf.ehcache
70 ehcache-core
71
72
73 net.sf.ehcache
74 ehcache-web
75
76
77
78 commons-fileupload
79 commons-fileupload
80
81
82 commons-io
83 commons-io
84
85
86 commons-codec
87 commons-codec
88
89
90 org.apache.commons
91 commons-collections4
92
93
94 org.apache.commons
95 commons-lang3
96
97
98
99 commons-beanutils
100 commons-beanutils
101
102
103 commons-logging
104 commons-logging
105
106
107
108
109
110 org.freemarker
111 freemarker
112
113
114
115
116
117 webapi
118
119
120
121 org.apache.tomcat.maven
122 tomcat8-maven-plugin
123
124
125
126
9.webservice/pom.xml
这个模块是做为 JAX-WS 服务站点的。
重复内容不在讲解,参考上文的说明。
1
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
4 solution
5 lm.solution
6 1.0-SNAPSHOT
7
8 4.0.0
9
10 lm.solution
11 webservice
12 1.0-SNAPSHOT
13 war
14
15 webservice Maven Webapp
16 http://maven.apache.org
17
18
19
20
21 lm.solution
22 service
23 1.0-SNAPSHOT
24
25
26
27
28 com.sun.xml.ws
29 jaxws-rt
30
31
32
33
34 webservice
35
36
蒙
2018-05-25 23:36 周五