基於 Maven 的多模塊 Java(Spring)項目構建

參看代碼 GitHub:

solution/pom.xml

pojo/pom.xml

mapper/pom.xml

common/pom.xml

service/pom.xml

console/pom.xml

web/pom.xml

webapi/pom.xml

webservice/pom.xml

一、Intelij IDEA 中構建 maven 項目及模塊

1.新建 maven 項目,在IDE中的菜單位置

2.項目中新建模塊在IDE中的菜單位置

3.整個項目的結構

二、Maven 模塊及模塊關係要點講解

1.solution/pom.xml

< groupId>lm.solution groupId>

< artifactId>solution artifactId>

< version>1.0-SNAPSHOT version>

講解:

groupId :模塊項目歸屬組織名稱

artifactId:項目內模塊名稱

version:模塊的版本號

這三個屬性唯一的標識了一個模塊,也被稱為 maven 座標。

< modules>

< module>webapi module>

... ...

modules>

講解:

因為 solution 這個模塊是做為項目父模塊存在的,在 modules 標籤內就指明瞭該模塊都包含哪些子模塊:

webapi、web、common、service、mapper、pojo、console、webservice。

< packaging>pom packaging>

講解:

因為 solution 模塊將包含多個子模塊,所以這裡的打包方式選擇 pom 值。

< properties>

< spring.version>4.3.13.RELEASE spring.version>

... ...

properties>

講解:

在父模塊中定義的 properties maven 屬性變量,除了在本模塊中可直接引用外,在所有的子模塊中也可以直接被引用,

也就是說在子模塊中就可以不必在重新定義 maven的屬性變量了,如 spring.version 這個屬性變量,在所有模塊及子模塊中

可以被直接使用 ${spring.version} 。

< dependencies>

< dependency>

< groupId>junit groupId>

< artifactId>junit artifactId>

... ...

dependency>

... ...

dependencies>

講解:

在父模塊中定義的類庫依賴,除了在父模塊中會做引用以外,在所有子模塊中也都會做自動的引用,

所以在子模塊中就不必添加 dependencies 中的依賴了,如 junit 這個第三方類庫,在子模塊中 maven

會自動繼承父模塊的 junit 依賴,子模塊中就不必再添加 junit 的類庫依賴了。

< dependencyManagement>

< dependencies>

< dependency>

< groupId>org.mybatis groupId>

< artifactId>mybatis artifactId>

< version> ${mybatis.version} version>

dependency>

... ...

dependencies>

dependencyManagement>

講解:

有的類庫依賴,在部分子模塊中需要,在部分子模塊中不需要,此時,就可將依賴關係放到此節點中,

例如:mybatis 這個第三方 orm 庫,在 pojo(僅是映射關係的實體層) 子模塊中沒有依賴,而在 mapper(orm 存儲倉層) 這個

子模塊中就是關鍵依賴。

< build>

< plugins>

< plugin>

< groupId>org.apache.maven.plugins groupId>

< artifactId>maven-compiler-plugin artifactId>

... ...

plugin>

plugins>

< pluginManagement>

< plugins>

< plugin>

< groupId>org.apache.tomcat.maven groupId>

< artifactId>tomcat8-maven-plugin artifactId>

... ...

plugin>

plugins>

pluginManagement>

build>

講解:

這裡 plugins 與 pluginManagement 可參看上面講解到的 dependencies 與 dependencyManagement 的作用,他們作用

類似,因為每個模塊都需要 maven-compiler-plugin 編譯插件,所以直接將其放到父模塊的 plugins 標籤內,而 tomcat8-maven-plugin

插件只有 web 子模塊需要,所以將其放到 pluginManagement 標籤中。

solution/pom.xml

1 <project> 3 <modelversion>4.0.0/<modelversion> 4 5 <groupid>lm.solution/<groupid> 6 <artifactid>solution/<artifactid> 7 <version>1.0-SNAPSHOT/<version> 8 <modules> 9 <module>webapi/<module>10 <module>web/<module>11 <module>common/<module>12 <module>service/<module>13 <module>mapper/<module>14 <module>pojo/<module>15 <module>console/<module>16 <module>webservice/<module>17 /<modules>18 <packaging>pom/<packaging>1920 <name>solution/<name>21 http://maven.apache.org2223 <properties>24 25 <project.build.sourceencoding>UTF-8/<project.build.sourceencoding>26 27 <spring.version>4.3.13.RELEASE/<spring.version>28 29 <slf4j.version>1.7.7/<slf4j.version>30 <log4j.version>1.2.17/<log4j.version>31 32 <jackson.version>2.9.4/<jackson.version>33 34 <junit.version>4.12/<junit.version>35 36 <aspectj.version>1.8.13/<aspectj.version>37 38 <cglib.version>3.1/<cglib.version>39 40 <mybatis.version>3.4.5/<mybatis.version>41 42 <mybatisspring.version>1.3.1/<mybatisspring.version>43 44 <mysql.version>5.1.34/<mysql.version>45 46 <druid.version>1.0.5/<druid.version>47 48 <javaxservlet.version>3.0.1/<javaxservlet.version>49 50 <jspapi.version>2.2/<jspapi.version>51

52 <jstl.version>1.2/<jstl.version>53 54 <jsonlib.version>2.1/<jsonlib.version>55 56 <jacksonold.version>1.9.13/<jacksonold.version>57 58 <dom4j.version>1.6.1/<dom4j.version>59 60 <ehcachecore.version>2.6.9/<ehcachecore.version>61 62 <ehcacheweb.version>2.0.4/<ehcacheweb.version>63 64 <commonsfileupload.version>1.3.1/<commonsfileupload.version>65 66 <commonsio.version>2.4/<commonsio.version>67 68 <commonscodec.version>1.9/<commonscodec.version>69 70 <commonscollections4.version>4.0/<commonscollections4.version>71 72 <commonsbeanutils.version>1.7.0/<commonsbeanutils.version>73 74 <freemarker.version>2.3.19/<freemarker.version>75 76 <poi.version>3.9/<poi.version>77 78 <httpcore.version>4.4.8/<httpcore.version>79 <httpclient.version>4.5.4/<httpclient.version>80 81 <jaxwsrt.version>2.3.0/<jaxwsrt.version>82 83 <jedis.version>2.9.0/<jedis.version>84 85 <amqpclient.version>5.1.2/<amqpclient.version>86 87 <fastjson.version>1.2.46/<fastjson.version>88 89 <jsr250.version>1.0/<jsr250.version>90 /<properties>9192 <dependencies>93 94 <dependency>95 <groupid>junit/<groupid>96 <artifactid>junit/<artifactid>97 <version>RELEASE/<version>98 99 <scope>test/<scope>100 /<dependency>101 102 <dependency>103 <groupid>org.springframework/<groupid>104 <artifactid>spring-test/<artifactid>105 <version>${spring.version}/<version>106 <scope>test/<scope>107 /<dependency>108 109 <dependency>110 <groupid>org.springframework/<groupid>111 112 <artifactid>spring-context/<artifactid>113 <version>${spring.version}/<version>114 /<dependency>115 <dependency>116 <groupid>org.springframework/<groupid>117 <artifactid>spring-context-support/<artifactid>118 <version>${spring.version}/<version>119 /<dependency>120 <dependency>121 <groupid>org.springframework/<groupid>122 <artifactid>spring-aspects/<artifactid>123 <version>${spring.version}/<version>124 /<dependency>125 <dependency>126 <groupid>org.springframework/<groupid>127 <artifactid>spring-tx/<artifactid>128 <version>${spring.version}/<version>129 /<dependency>130 <dependency>131 <groupid>org.springframework/<groupid>132 <artifactid>spring-jdbc/<artifactid>133 <version>${spring.version}/<version>134 /<dependency>135 136 <dependency>137 <groupid>org.aspectj/<groupid>138 <artifactid>aspectjrt/<artifactid>139 <version>${aspectj.version}/<version>140 /<dependency>141 <dependency>142 <groupid>org.aspectj/<groupid>143 <artifactid>aspectjweaver/<artifactid>144 <version>${aspectj.version}/<version>145 /<dependency>146 147 <dependency>148 <groupid>com.fasterxml.jackson.core/<groupid>149 <artifactid>jackson-annotations/<artifactid>150 <version>${jackson.version}/<version>151 /<dependency>152 <dependency>153 <groupid>com.fasterxml.jackson.core/<groupid>154 <artifactid>jackson-databind/<artifactid>155 <version>${jackson.version}/<version>156 /<dependency>157 <dependency>158 <groupid>com.fasterxml.jackson.core/<groupid>159 <artifactid>jackson-core/<artifactid>160 <version>${jackson.version}/<version>161 /<dependency>162 <dependency>163 <groupid>com.fasterxml.jackson.dataformat/<groupid>164 <artifactid>jackson-dataformat-xml/<artifactid>165 <version>${jackson.version}/<version>166 /<dependency>167 168 <dependency>169 <groupid>log4j/<groupid>170 <artifactid>log4j/<artifactid>171 <version>${log4j.version}/<version>172 /<dependency>173 <dependency>174 <groupid>org.slf4j/<groupid>175 <artifactid>slf4j-api/<artifactid>176 <version>${slf4j.version}/<version>177 /<dependency>178 <dependency>179 <groupid>org.slf4j/<groupid>180 <artifactid>slf4j-log4j12/<artifactid>181 <version>${slf4j.version}/<version>182 /<dependency>183 /<dependencies>184185 <dependencymanagement>186 <dependencies>187 188 <dependency>189 <groupid>org.springframework/<groupid>190 <artifactid>spring-web/<artifactid>191 <version>${spring.version}/<version>192 /<dependency>193 <dependency>194 <groupid>org.springframework/<groupid>195 <artifactid>spring-webmvc/<artifactid>196 <version>${spring.version}/<version>197 /<dependency>198 199 <dependency>200 <groupid>cglib/<groupid>201 <artifactid>cglib/<artifactid>202 <version>${cglib.version}/<version>203 /<dependency>204 205 <dependency>206 <groupid>org.mybatis/<groupid>207 <artifactid>mybatis/<artifactid>208 <version>${mybatis.version}/<version>209 /<dependency>210 <dependency>211 <groupid>org.mybatis/<groupid>212 <artifactid>mybatis-spring/<artifactid>213 <version>${mybatisSpring.version}/<version>214 /<dependency>215 216 <dependency>217 <groupid>mysql/<groupid>218 <artifactid>mysql-connector-java/<artifactid>219 <version>${mysql.version}/<version>220 /<dependency>221 222 <dependency>223 <groupid>com.alibaba/<groupid>224 <artifactid>druid/<artifactid>225 <version>${druid.version}/<version>226 227 /<dependency>228 229 <dependency>230 <groupid>javax.servlet/<groupid>231 <artifactid>javax.servlet-api/<artifactid>232 <version>${javaxServlet.version}/<version>233 <scope>provided/<scope>234 /<dependency>235 <dependency>236 <groupid>javax.servlet.jsp/<groupid>237 <artifactid>jsp-api/<artifactid>238 <version>${jspApi.version}/<version>239 <scope>provided/<scope>240 /<dependency>241 <dependency>242 <groupid>javax.servlet/<groupid>243 <artifactid>jstl/<artifactid>244 <version>${jstl.version}/<version>245 /<dependency>246 247 <dependency>248 <groupid>net.sf.json-lib/<groupid>249 <artifactid>json-lib/<artifactid>250 <version>${jsonLib.version}/<version>251 <classifier>jdk15/<classifier>252 /<dependency>253 254 <dependency>255 <groupid>org.codehaus.jackson/<groupid>256 <artifactid>jackson-core-asl/<artifactid>257 <version>${jacksonOld.version}/<version>258 /<dependency>259 <dependency>260 <groupid>org.codehaus.jackson/<groupid>261 <artifactid>jackson-mapper-asl/<artifactid>262 <version>${jacksonOld.version}/<version>263 /<dependency>264 265 <dependency>266 <groupid>dom4j/<groupid>267 <artifactid>dom4j/<artifactid>268 <version>${dom4j.version}/<version>269 /<dependency>270 271 <dependency>272 <groupid>net.sf.ehcache/<groupid>273 <artifactid>ehcache-core/<artifactid>274 <version>${ehcacheCore.version}/<version>275 /<dependency>276 <dependency>277 <groupid>net.sf.ehcache/<groupid>278 <artifactid>ehcache-web/<artifactid>279 <version>${ehcacheWeb.version}/<version>280 /<dependency>281 282 <dependency>283 <groupid>commons-fileupload/<groupid>284 <artifactid>commons-fileupload/<artifactid>285 <version>${commonsFileupload.version}/<version>286 /<dependency>287 <dependency>288 <groupid>commons-io/<groupid>289 <artifactid>commons-io/<artifactid>290 <version>${commonsIo.version}/<version>291 /<dependency>292 <dependency>293 <groupid>commons-codec/<groupid>294 <artifactid>commons-codec/<artifactid>295 <version>${commonsCodec.version}/<version>296 /<dependency>297 <dependency>298 <groupid>org.apache.commons/<groupid>299 <artifactid>commons-collections4/<artifactid>300 <version>${commonsCollections4.version}/<version>301 /<dependency>302 <dependency>303 <groupid>org.apache.commons/<groupid>304 <artifactid>commons-lang3/<artifactid>305 <version>3.3.2/<version>306 /<dependency>307 308 <dependency>309 <groupid>commons-beanutils/<groupid>310 <artifactid>commons-beanutils/<artifactid>311 <version>${commonsBeanutils.version}/<version>312 <exclusions>313 <exclusion>314 <groupid>commons-logging/<groupid>315 <artifactid>commons-logging/<artifactid>316 /<exclusion>317 /<exclusions>318 /<dependency>319 320 <dependency>321 <groupid>org.freemarker/<groupid>322 <artifactid>freemarker/<artifactid>323 <version>${freemarker.version}/<version>324 /<dependency>325 326 <dependency>327 <groupid>org.apache.poi/<groupid>328 <artifactid>poi/<artifactid>329 <version>${poi.version}/<version>330 /<dependency>331 <dependency>332 <groupid>org.apache.poi/<groupid>333 <artifactid>poi-ooxml/<artifactid>334 <version>${poi.version}/<version>335 /<dependency>336 337 <dependency>338 <groupid>org.apache.httpcomponents/<groupid>339 <artifactid>httpcore/<artifactid>340 <version>${httpcore.version}/<version>341 /<dependency>342 <dependency>343 <groupid>org.apache.httpcomponents/<groupid>344 <artifactid>httpclient/<artifactid>345 <version>${httpclient.version}/<version>346 /<dependency>347
348 <dependency>349 <groupid>com.sun.xml.ws/<groupid>350 <artifactid>jaxws-rt/<artifactid>351 <version>${jaxwsRt.version}/<version>352 /<dependency>353 354 <dependency>355 <groupid>redis.clients/<groupid>356 <artifactid>jedis/<artifactid>357 <version>${jedis.version}/<version>358 /<dependency>359 360 <dependency>361 <groupid>com.rabbitmq/<groupid>362 <artifactid>amqp-client/<artifactid>363 <version>${amqpClient.version}/<version>364 /<dependency>365 366 <dependency>367 <groupid>com.alibaba/<groupid>368 <artifactid>fastjson/<artifactid>369 <version>${fastjson.version}/<version>370 /<dependency>371 372 <dependency>373 <groupid>javax.annotation/<groupid>374 <artifactid>jsr250-api/<artifactid>375 <version>${jsr250.version}/<version>376 /<dependency>377 /<dependencies>378 /<dependencymanagement>379380 <build>381 <plugins>382 383 <plugin>384 <groupid>org.apache.maven.plugins/<groupid>385 <artifactid>maven-compiler-plugin/<artifactid>386 <version>3.2/<version>387 <configuration>388 <source>1.8/<source>389 <target>1.8/<target>390 <encoding>UTF-8/<encoding>391 /<configuration>392 /<plugin>393 /<plugins>394395 <pluginmanagement>396 <plugins>397 398 <plugin>399 <groupid>org.apache.tomcat.maven/<groupid>400 <artifactid>tomcat8-maven-plugin/<artifactid>401 <version>3.0-r1756463/<version>402 /<plugin>403 /<plugins>404 /<pluginmanagement>405 /<build>406407 /<project>

2.pojo/pom.xml

這個模塊是做為實體層的。

重複內容不在講解,參考上文的說明。

< parent>

< artifactId>solution artifactId>

< groupId>lm.solution groupId>

... ...

parent>

講解:

因為 pojo 模塊是 solution 模塊的子模塊,所以要在 parent 標籤內指明父模塊是 solution 模塊的座標。

< packaging>jar packaging>

講解:

因為這裡 pojo 模塊是做為其它模塊依賴的類庫使用的,所以打包方式為 jar 值。

pojo/pom.xml

1 <project>3 <parent>4 <artifactid>solution/<artifactid>5 <groupid>lm.solution/<groupid>6 <version>1.0-SNAPSHOT/<version>7 /<parent>8 <modelversion>4.0.0/<modelversion>910 <groupid>lm.solution/<groupid>11 <artifactid>pojo/<artifactid>12 <version>1.0-SNAPSHOT/<version>13 <packaging>jar/<packaging>1415 <name>pojo/<name>16 http://maven.apache.org1718 <properties>19 <project.build.sourceencoding>UTF-8/<project.build.sourceencoding>20 /<properties>2122 <dependencies>23 2425 2627 /<dependencies>28 /<project>

3.mapper/pom.xml

這個模塊是做為存儲倉層的。

重複內容不在講解,參考上文的說明。

< dependencies>

< dependency>

< groupId>lm.solution groupId>

< artifactId>pojo artifactId>

< version>1.0-SNAPSHOT version>

dependency>

... ...

< dependency>

< groupId>org.mybatis groupId>

< artifactId>mybatis artifactId>

dependency>

... ...

dependencies>

講解:

因為 mapper 模塊依賴 pojo 模塊,所以這裡引入 pojo 的依賴座標,

又由於該模塊需要第三方mybatis類庫,所以 這裡引入mybatis 的 maven 座標,

上文中 solution 父模塊 已經在 dependencyManagement 指明瞭,所以這裡就不用再指明 version 了。

mapper/pom.xml

1 <project>3 <parent>4 <artifactid>solution/<artifactid>5 <groupid>lm.solution/<groupid>6 <version>1.0-SNAPSHOT/<version>7 /<parent>8 <modelversion>4.0.0/<modelversion>910 <groupid>lm.solution/<groupid>11 <artifactid>mapper/<artifactid>12 <version>1.0-SNAPSHOT/<version>13 <packaging>jar/<packaging>1415 <name>mapper/<name>16 http://maven.apache.org1718 <properties>19 <project.build.sourceencoding>UTF-8/<project.build.sourceencoding>20 /<properties>2122 <dependencies>23 24 <dependency>25 <groupid>lm.solution/<groupid>26 <artifactid>pojo/<artifactid>27 <version>1.0-SNAPSHOT/<version>28 /<dependency>2930 31 <dependency>32 <groupid>org.mybatis/<groupid>33 <artifactid>mybatis/<artifactid>34 /<dependency>35 <dependency>36 <groupid>mysql/<groupid>37 <artifactid>mysql-connector-java/<artifactid>38 /<dependency>39 <dependency>40 <groupid>com.alibaba/<groupid>41 <artifactid>druid/<artifactid>42 <scope>runtime/<scope>43 /<dependency>44 /<dependencies>45 /<project>

4.common/pom.xml

這個模塊是做為公共類庫模塊的。

重複內容不在講解,參考上文的說明。

1 <project>3 <parent>4 <artifactid>solution/<artifactid>5 <groupid>lm.solution/<groupid>6 <version>1.0-SNAPSHOT/<version>7 /<parent>8 <modelversion>4.0.0/<modelversion>910 <groupid>lm.solution/<groupid>11 <artifactid>common/<artifactid>12 <version>1.0-SNAPSHOT/<version>13 <packaging>jar/<packaging>1415 <name>common/<name>16 http://maven.apache.org1718 <dependencies>19 20 <dependency>21 <groupid>lm.solution/<groupid>22 <artifactid>pojo/<artifactid>23 <version>1.0-SNAPSHOT/<version>24 /<dependency>2526 27 28 <dependency>29 <groupid>org.springframework/<groupid>30 <artifactid>spring-webmvc/<artifactid>31 /<dependency>32 33 <dependency>34 <groupid>org.apache.poi/<groupid>35 <artifactid>poi/<artifactid>36 /<dependency>37 38 <dependency>39 <groupid>org.apache.poi/<groupid>40 <artifactid>poi-ooxml/<artifactid>41 /<dependency>42 43 <dependency>44 <groupid>javax.servlet/<groupid>45 <artifactid>javax.servlet-api/<artifactid>46 <scope>provided/<scope>47 /<dependency>48 49 <dependency>50 <groupid>org.apache.httpcomponents/<groupid>51 <artifactid>httpcore/<artifactid>52 /<dependency>53 <dependency>54 <groupid>org.apache.httpcomponents/<groupid>55 <artifactid>httpclient/<artifactid>56 /<dependency>57 58 <dependency>59 <groupid>org.apache.commons/<groupid>60 <artifactid>commons-collections4/<artifactid>61 /<dependency>62 63 <dependency>64 <groupid>redis.clients/<groupid>65 <artifactid>jedis/<artifactid>66 /<dependency>67 68 <dependency>69 <groupid>com.rabbitmq/<groupid>70 <artifactid>amqp-client/<artifactid>71 /<dependency>72 /<dependencies>73 /<project>

5.service/pom.xml

這個模塊是做為服務類庫模塊的。

重複內容不在講解,參考上文的說明。

1 <project>3 <parent>4 <artifactid>solution/<artifactid>5 <groupid>lm.solution/<groupid>6 <version>1.0-SNAPSHOT/<version>7 /<parent>8 <modelversion>4.0.0/<modelversion>910 <groupid>lm.solution/<groupid>11 <artifactid>service/<artifactid>12 <version>1.0-SNAPSHOT/<version>13 <packaging>jar/<packaging>1415 <name>service/<name>16 http://maven.apache.org1718 <properties>19 <project.build.sourceencoding>UTF-8/<project.build.sourceencoding>20 /<properties>2122 <dependencies>23 24 <dependency>25 <groupid>lm.solution/<groupid>26 <artifactid>mapper/<artifactid>27 <version>1.0-SNAPSHOT/<version>28 /<dependency>2930 3132 /<dependencies>33 /<project>

6.console/pom.xml

這個模塊是做為各種測試用的模塊。

重複內容不在講解,參考上文的說明。

1 <project>3 <parent>4 <artifactid>solution/<artifactid>5 <groupid>lm.solution/<groupid>6 <version>1.0-SNAPSHOT/<version>7 /<parent>8 <modelversion>4.0.0/<modelversion>910 <groupid>lm.solution/<groupid>11 <artifactid>console/<artifactid>12 <version>1.0-SNAPSHOT/<version>13 <packaging>jar/<packaging>1415 <name>console/<name>16 http://maven.apache.org1718 <properties>19 <project.build.sourceencoding>UTF-8/<project.build.sourceencoding>20 /<properties>2122 <dependencies>23 24 <dependency>25 <groupid>lm.solution/<groupid>26 <artifactid>pojo/<artifactid>27 <version>1.0-SNAPSHOT/<version>28 /<dependency>29 <dependency>30 <groupid>lm.solution/<groupid>31 <artifactid>common/<artifactid>32 <version>1.0-SNAPSHOT/<version>33 /<dependency>34 <dependency>35 <groupid>lm.solution/<groupid>36 <artifactid>service/<artifactid>37 <version>1.0-SNAPSHOT/<version>38 /<dependency>3940

41 42 <dependency>43 <groupid>org.codehaus.jackson/<groupid>44 <artifactid>jackson-core-asl/<artifactid>45 /<dependency>46 <dependency>47 <groupid>org.codehaus.jackson/<groupid>48 <artifactid>jackson-mapper-asl/<artifactid>49 /<dependency>50 <dependency>51 <groupid>com.rabbitmq/<groupid>52 <artifactid>amqp-client/<artifactid>53 /<dependency>54 55 <dependency>56 <groupid>com.alibaba/<groupid>57 <artifactid>fastjson/<artifactid>58 /<dependency>59 60 <dependency>61 <groupid>commons-io/<groupid>62 <artifactid>commons-io/<artifactid>63 /<dependency>64 65 <dependency>66 <groupid>javax.annotation/<groupid>67 <artifactid>jsr250-api/<artifactid>68 /<dependency>69 70 <dependency>71 <groupid>javax.servlet/<groupid>72 <artifactid>javax.servlet-api/<artifactid>73 /<dependency>7475 76 <dependency>77 <groupid>junit/<groupid>78 <artifactid>junit/<artifactid>79 <version>RELEASE/<version>80 /<dependency>81 <dependency>82 <groupid>org.springframework/<groupid>83 <artifactid>spring-test/<artifactid>84 <version>4.3.13.RELEASE/<version>85 /<dependency>86 /<dependencies>878889 /<project>

7.web/pom.xml

這個模塊是做為 web 站點的。

重複內容不在講解,參考上文的說明。

< packaging>war packaging>

講解:

因為這模塊在編譯後是部署到 tomcat 容器的,所以這裡採用的打包方式是 war 值。

web/pom.xml

1 <project>3 <parent>4 <artifactid>solution/<artifactid>5 <groupid>lm.solution/<groupid>6 <version>1.0-SNAPSHOT/<version>7 /<parent>8 <modelversion>4.0.0/<modelversion>9 <groupid>lm.solution/<groupid>10 <artifactid>web/<artifactid>11 <packaging>war/<packaging>12 <version>1.0-SNAPSHOT/<version>13 <name>web Maven Webapp/<name>14 http://maven.apache.org15 <dependencies>16 17 <dependency>18 <groupid>lm.solution/<groupid>19 <artifactid>service/<artifactid>20 <version>1.0-SNAPSHOT/<version>21 /<dependency>22 <dependency>23 <groupid>lm.solution/<groupid>24 <artifactid>common/<artifactid>25 <version>1.0-SNAPSHOT/<version>26 /<dependency>2728 29 30 <dependency>31 <groupid>org.springframework/<groupid>32 33 <artifactid>spring-webmvc/<artifactid>34 /<dependency>35 36 <dependency>37 <groupid>cglib/<groupid>38 <artifactid>cglib/<artifactid>39 /<dependency>40 41 <dependency>42 <groupid>org.mybatis/<groupid>43 <artifactid>mybatis/<artifactid>44 /<dependency>45 46 <dependency>47 <groupid>org.mybatis/<groupid>48 <artifactid>mybatis-spring/<artifactid>49 /<dependency>50 51 <dependency>52 <groupid>mysql/<groupid>53 <artifactid>mysql-connector-java/<artifactid>54 /<dependency>55 56 <dependency>57 <groupid>com.alibaba/<groupid>58 <artifactid>druid/<artifactid>59 60 /<dependency>61 62 <dependency>63 <groupid>javax.servlet/<groupid>64 <artifactid>javax.servlet-api/<artifactid>65 <scope>provided/<scope>66 /<dependency>67 <dependency>68 <groupid>javax.servlet.jsp/<groupid>69 <artifactid>jsp-api/<artifactid>70 <scope>provided/<scope>71 /<dependency>72 <dependency>73 <groupid>javax.servlet/<groupid>74 <artifactid>jstl/<artifactid>75 /<dependency>76 77 <dependency>78 <groupid>net.sf.json-lib/<groupid>79 <artifactid>json-lib/<artifactid>80 <classifier>jdk15/<classifier>81 /<dependency>82 83 <dependency>84 <groupid>dom4j/<groupid>85 <artifactid>dom4j/<artifactid>86 /<dependency>87 88 <dependency>89 <groupid>net.sf.ehcache/<groupid>90 <artifactid>ehcache-core/<artifactid>91 /<dependency>92 <dependency>93 <groupid>net.sf.ehcache/<groupid>94 <artifactid>ehcache-web/<artifactid>95 /<dependency>96 97 <dependency>98 <groupid>commons-fileupload/<groupid>99 <artifactid>commons-fileupload/<artifactid>100 /<dependency>101 <dependency>102 <groupid>commons-io/<groupid>103 <artifactid>commons-io/<artifactid>104 /<dependency>105 106 <dependency>107 <groupid>commons-codec/<groupid>108 <artifactid>commons-codec/<artifactid>109 /<dependency>110 <dependency>111 <groupid>org.apache.commons/<groupid>112 <artifactid>commons-collections4/<artifactid>113 /<dependency>114 <dependency>115 <groupid>org.apache.commons/<groupid>116 <artifactid>commons-lang3/<artifactid>117 /<dependency>118 119 <dependency>120 <groupid>commons-beanutils/<groupid>121 <artifactid>commons-beanutils/<artifactid>122 <exclusions>123 <exclusion>124 <groupid>commons-logging/<groupid>125 <artifactid>commons-logging/<artifactid>126 /<exclusion>127 /<exclusions>128 /<dependency>129 130 <dependency>131 <groupid>org.freemarker/<groupid>132 <artifactid>freemarker/<artifactid>133 /<dependency>134

135 <dependency>136 <groupid>org.apache.httpcomponents/<groupid>137 <artifactid>httpcore/<artifactid>138 /<dependency>139 <dependency>140 <groupid>org.apache.httpcomponents/<groupid>141 <artifactid>httpclient/<artifactid>142 /<dependency>143 144 <dependency>145 <groupid>redis.clients/<groupid>146 <artifactid>jedis/<artifactid>147 /<dependency>148 149 <dependency>150 <groupid>com.rabbitmq/<groupid>151 <artifactid>amqp-client/<artifactid>152 /<dependency>153 154 <dependency>155 <groupid>com.alibaba/<groupid>156 <artifactid>fastjson/<artifactid>157 /<dependency>158 /<dependencies>159 <build>160 <finalname>web/<finalname>161162 <plugins>163 <plugin>164 <groupid>org.apache.tomcat.maven/<groupid>165 <artifactid>tomcat8-maven-plugin/<artifactid>166 /<plugin>167 /<plugins>168 /<build>169 /<project>

8.webapi/pom.xml

這個模塊是做為 Restful API 站點的。

重複內容不在講解,參考上文的說明。

1 <project>34 <parent>5 <artifactid>solution/<artifactid>6 <groupid>lm.solution/<groupid>7 <version>1.0-SNAPSHOT/<version>8 /<parent>910 <modelversion>4.0.0/<modelversion>11 <groupid>lm.solution/<groupid>12 <artifactid>webapi/<artifactid>13 <packaging>war/<packaging>14 <version>1.0-SNAPSHOT/<version>15 <name>webapi Maven Webapp/<name>16 http://maven.apache.org1718 <dependencies>19 20 <dependency>21 <groupid>lm.solution/<groupid>22 <artifactid>service/<artifactid>23 <version>1.0-SNAPSHOT/<version>24 /<dependency>25 <dependency>26 <groupid>lm.solution/<groupid>27 <artifactid>common/<artifactid>28 <version>1.0-SNAPSHOT/<version>29 /<dependency>3031 32 <dependency>33 <groupid>cglib/<groupid>34 <artifactid>cglib/<artifactid>35 /<dependency>3637 38 <dependency>39 <groupid>org.mybatis/<groupid>40 <artifactid>mybatis-spring/<artifactid>41 /<dependency>42 <dependency>43 <groupid>javax.servlet/<groupid>44 <artifactid>javax.servlet-api/<artifactid>45 <scope>provided/<scope>46 /<dependency>47 <dependency>48 <groupid>javax.servlet.jsp/<groupid>49 <artifactid>jsp-api/<artifactid>50 <scope>provided/<scope>51 /<dependency>52 <dependency>53 <groupid>javax.servlet/<groupid>54 <artifactid>jstl/<artifactid>55 /<dependency>56 57 <dependency>58 <groupid>net.sf.json-lib/<groupid>59 <artifactid>json-lib/<artifactid>60 <classifier>jdk15/<classifier>61 /<dependency>62 63 <dependency>64 <groupid>dom4j/<groupid>65 <artifactid>dom4j/<artifactid>66 /<dependency>67 68 <dependency>69 <groupid>net.sf.ehcache/<groupid>70 <artifactid>ehcache-core/<artifactid>71 /<dependency>72 <dependency>73 <groupid>net.sf.ehcache/<groupid>74 <artifactid>ehcache-web/<artifactid>75 /<dependency>76 77 <dependency>78 <groupid>commons-fileupload/<groupid>79 <artifactid>commons-fileupload/<artifactid>80 /<dependency>81 <dependency>82 <groupid>commons-io/<groupid>83 <artifactid>commons-io/<artifactid>84 /<dependency>85 <dependency>86 <groupid>commons-codec/<groupid>87 <artifactid>commons-codec/<artifactid>88 /<dependency>89 <dependency>90 <groupid>org.apache.commons/<groupid>91 <artifactid>commons-collections4/<artifactid>92 /<dependency>93 <dependency>94 <groupid>org.apache.commons/<groupid>95 <artifactid>commons-lang3/<artifactid>96 /<dependency>97 98 <dependency>99 <groupid>commons-beanutils/<groupid>100 <artifactid>commons-beanutils/<artifactid>101 <exclusions>102 <exclusion>103 <groupid>commons-logging/<groupid>104 <artifactid>commons-logging/<artifactid>105 /<exclusion>106 /<exclusions>107 /<dependency>108 109 <dependency>110 <groupid>org.freemarker/<groupid>111 <artifactid>freemarker/<artifactid>112 /<dependency>113114 /<dependencies>115116 <build>117 <finalname>webapi/<finalname>118119 <plugins>120 <plugin>121 <groupid>org.apache.tomcat.maven/<groupid>122 <artifactid>tomcat8-maven-plugin/<artifactid>123 /<plugin>124 /<plugins>125 /<build>126 /<project>

9.webservice/pom.xml

這個模塊是做為 JAX-WS 服務站點的。

重複內容不在講解,參考上文的說明。

1 <project>3 <parent>4 <artifactid>solution/<artifactid>5 <groupid>lm.solution/<groupid>6 <version>1.0-SNAPSHOT/<version>7 /<parent>8 <modelversion>4.0.0/<modelversion>910 <groupid>lm.solution/<groupid>11 <artifactid>webservice/<artifactid>12 <version>1.0-SNAPSHOT/<version>13 <packaging>war/<packaging>1415 <name>webservice Maven Webapp/<name>16 http://maven.apache.org1718 <dependencies>19 20 <dependency>21 <groupid>lm.solution/<groupid>22 <artifactid>service/<artifactid>23 <version>1.0-SNAPSHOT/<version>24 /<dependency>2526 27 <dependency>28 <groupid>com.sun.xml.ws/<groupid>29 <artifactid>jaxws-rt/<artifactid>30 /<dependency>31 /<dependencies>3233 <build>34 <finalname>webservice/<finalname>35 /<build>36 /<project>