maven(八)继承和聚合

来源:互联网 发布:知乎发帖时间 编辑:程序博客网 时间:2024/06/08 02:03

1、maven的聚合

聚合就是将多个项目合成一个大的,完整的项目。比如我们常用的dao,service,controller层就可以聚合为一个项目运行。

首先我们创建一个简单的实体类项目entities,配置pom文件。
这里写图片描述

主要配置项目编码和jdk版本即可。接着创建用户类User:
这里写图片描述

主要有id,name,pwd三个属性,一个构造方法和一个toString方法。这样一个简单的实体类项目就完成了。

然后我们创建dao层的项目。配置pom文件。

这里写图片描述

这个只是比entities的pom文件多了一个junit的依赖。然后创建dao层,但是我们需要用到entities里的User对象,怎么办呢,很简单,回到entities项目,运行clean install就可以了,这样entities项目自动打包发布到本地仓库中,然后在dao的pom文件中加入entities的依赖,这样就可以了。由于主要写的是maven的用法,就简化对数据库的操作了。

这里写图片描述

这里写图片描述

这里写图片描述
接着写测试类:

这里写图片描述

运行clean test命令:

这里写图片描述

效果不错,测试全部成功。OK。接下来就写聚合项目了。new -> other - > maven ->这里选中create a
simple project。groupId和artifactId、version和前面是一样的。注意:这里packaging需要改为pom类型,这样聚合项目就创建成功了。
这里写图片描述

接下来把entities项目和dao项目聚合起来,在pom文件中配置即可。

这里写图片描述

module中配置entities和dao项目的相对路径即可。接下来运行clean package试试看:哎呦,不错哦。测试成功,模块也聚合起来了。

这里写图片描述

2、maven继承

聚合之后发现配置文件中有好多配置是相同的,这样就出现了沉余,解决这个问题就可以用maven的继承即可。和java的继承是一样的,父类是模版,子类继承父类。这样像常量,依赖,插件都可以不用再声明了。也不用担心依赖版本不同带来的不便。其实继承和聚合的项目创建是一样的,正常项目也不会将俩个分开写,所以我就直接在聚合项目中写了。我们将entities和dao项目需要的都加入聚合aggregator项目的配置文件中。

这里写图片描述

接着将entities和dao项目中的依赖去掉,只需要在parent节点中加入父类的信息及相对路径即可:

这里写图片描述

这里写图片描述

注意dao层依赖的entities不可以提到aggregator中。因为entities项目不可能定位到自己。

每一个模块节省了许多重复配置,每一个模块少了版本号,groupId等信息。因为被继承了,所以不需要配置了。下列是可以被继承的元素:
groupId:项目组Id
version:版本信息
discription:描述信息
orrganization:项目组织信息
inceptionYear:项目创建年份
url:项目链接地址
developer:开发人
contributors:项目贡献者
distributionManagement:项目部署配置
issueManagement:项目问题跟踪信息
ciManagement:项目持续继承信息
scm:项目版本控制信息
mailingLists:邮件列表信息
properties:自定义常量属性信息
dependencies:项目依赖配置
dependenciesManagement:项目依赖管理配置
repositories:项目仓库配置
build:项目源码目录、输出目录、插件、插件管理配置
reporting:项目的报告输出目录,报告插件位置

可能现在有人有疑问了,我在entities项目中没有用到junit啊,这样我打包的时候会将junit的jar打包进项目,这样父类所有的jar都会到子项目中,打包的文件太大,占用资源啊。解决这个问题我们可以用到上面提到的dependenciesManagement来解决。因为他只是配置依赖了,但是如果子项目想用必须,必须加入依赖才可以使用。

aggregator:
这里写图片描述

dao:
这里写图片描述

好了,大功告成!!!!

原创粉丝点击