多模块Maven项目的快速构建
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
这里不介绍Maven的安装和配置,很简单,网上大把都有安装配置示例,这里只演示如何快速构建一个Maven项目。
一个简单的Maven模块结构是这样的:
---- app-root
|-- pom.xml (pom)
|
|-- app-util:工具类,所有工具类都提取出来写在这个项目中。
| |-- pom.xml (jar)
|
|-- app-entity:数据模型,与数据库表字段对应的实体类。
| |-- pom.xml (jar)
|
|-- app-dao:数据持久层,操作底层数据库。
| |-- pom.xml (jar)
|
|-- app-service:核心业务项目,主要是Service处理业务逻辑。
| |-- pom.xml (jar)
|
|-- app-web:这个就是整个项目的web层了,页面的显示以及控制层。
|-- pom.xml (war)
注:创建这些项目的时候,只有app-web是web项目即maven的:maven-archetype-webapp,其他的都是java项目:maven-archetype-quicktart
下面是各个模块的继承和依赖关系(箭头表示依赖):
- 所有模块都继承app-root父模块
- app-dao –> app-entity
- app-service –> app-dao
- app-web –> app-service
- app-service –> app-util
- app-web –> app-util
下面开始创建一个多模块的Maven项目
1.在eclipse中创建一个maven项目(个人原因手贱先创建了所以重名了不能点Next,无视就好):
1.1打开tbmaven-root项目中的pom.xml,并将Packaging改为pom
2.创建maven各个模块(注意各个模块的继承和依赖关系,这里以tbmaven-service为例):
2.1创建完之后,tbmaven-root中会出现
这是因为eclipse自动在父模块的pom中添加了下面的代码
而tbmaven-service因为继承了tbmaven-root,所以eclipse会在tbmaven-service的pom中加上如下代码
2.2因为tbmaven-service依赖tbmaven-util,tbmaven-dao和tbmaven-entity,所以需要在tbmaven-service的pom中添加下面一段依赖
注:
1.由于tbmaven-dao依赖了tbmaven-entity,那么tbmaven-service也间接依赖了tbmaven-entity,所以我们这里没有显示的依赖tbmaven-entity
2.${project.version}表示的是一个属性引用,指向了POM的project/version的值,也就是这个POM对应的version。由于tbmaven-service的version继承于tbmaven-root,因此它的值就是1.0-SNAPSHOT。而tbmaven-util也继承了这个值,因此在所有这些项目中,我们做到了保持版本一致。
3.创建tbmaven-web模块,创建web模块跟创建entity模块的方法是一样的,不同的是下面这个地方要选择maven-archetype-webapp
注:tbmaven-web的pom中的Packaging不是jar而是war,在上面maven结构图中也写到了。
到此就搭建好了企业级多模块的项目环境了。
注:搭建Maven项目时出现的问题:
1.tbmaven-web目录不全
解决办法:右键web项目–>Properties–>Java Build Path–>Libraries–>Add Library–>Server Runtime,然后把tomcat添加进来就可以了。
2.初学者最容易犯的一个错误
在发布项目的时候一定要把上面红框框的部分Remove掉,不然项目会发布不成功。