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:
好了,大功告成!!!!
- Maven详解(八)------ 继承和聚合
- maven(八)继承和聚合
- Maven - 继承和聚合
- maven 聚合和继承
- Maven聚合和继承
- maven聚合和继承
- 【Maven】聚合和继承
- maven聚合和继承
- Maven聚合和继承
- Maven - 继承和聚合
- Maven:聚合和继承
- maven 聚合和继承
- Maven继承和聚合
- maven--继承和聚合
- 【maven】---聚合和继承
- 【Maven】聚合和继承
- maven 继承和聚合
- Maven聚合和继承
- 先知创新大会议题第二弹:你不知道的网络安全黑科技
- maven install 失败
- 滚动的数字
- 基于Django的微信公众号开发(2) -- 在sae添加第三方包
- 判断客户端的请求是Ajax请求的方法
- maven(八)继承和聚合
- 听说中国最顶尖的原创安全技术都聚集在此了
- 设计模式-建造者模式
- 服务器找坑记
- 让Ubuntu的vi支持backspace
- java读取本地文件失败终极解决方案FileNotFoundException等一系列相关异常解决
- [2017-11-09] Configuring your clients and projects to use your Nexus repos
- 常用工具类、依赖、权限
- 打印日志的工具类