java多站点项目_基于 Maven 的多模块 Java ( Spring ) 项目构建

索引:

参看代码 GitHub:

一、Intelij IDEA 中构建 maven 项目及模块

1.新建 maven 项目,在IDE中的菜单位置

46c9f97b9cb2922d885c7113e70d9159.png

661dd735db5e1187da27f78dd844a22e.png

2.项目中新建模块在IDE中的菜单位置

13c05564b41379736abe7bb2c115d92b.png

3.整个项目的结构

b2ba638b292bfb0165eff8e8f02f4772.png

二、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 周五

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值