maven的继承和聚合
2015-12-29 10:33
204 查看
本人之前也用过maven的开发环境来开发项目,但是没有采用分布式开发,都是单独的一个项目做的开发。公司要走移动端开发,需要重新搭建一个移动端后台的框架,正好利用这个机会用maven做了一次分布式开发项目的模式,这种开发模式本人觉得最大的好处是功能细分,代码可以重复使用,维护项目特方便,发布项目也方便,充分解耦
1.首先说明本人用的是apache-maven-3.3.3
2.假设有A、B、C、三个功能模块的项目,比如都需要用到mybatis.jar,一般我们都会在每一个pom.xml会这样写
但是有一天假设mybatis.jar 3.2.8这个版本不够稳定,需要升级或者降低版本,那么我们肯定会修改3个pom.xml文件,这样显得有点操作繁琐,维护起来不是很方便。那我们就可以利用maven的一个特性”继承”,在java中继承是用extends关键字,maven使用的配置,所以我们可以单独建一个parent maven项目,然后在parent项目中的pom.xml加入以下配置
依赖文件管理表示以下配置依赖jar文件版本统一由此项目管理,倘若其它项目继承了此项目,若其它项目在配置maven依赖jar并还配置了节点,maven就会给出警告,此时A B C 项目就可以继承parent项目,只需在A B C各项目的pom.xml加入以下配置即可
配置了之后,由于 下面配置的jar文件并不会共享给子项目,所以A B C 的pom.xml 还是需要配置mybatis.jar的maven依赖,只是要去掉节点,变成了下面这样
这样maven的继承就ok了,以后要升高或者降低mybatis.jar的版本,只需要更改parent项目中pom.xml文件的依赖文件版本即可
3.我们知道有A B C 三个项目假设发布的时候我们肯定需要编译A B C 三个项目 分别打成不同jar文件,但是我们同样的操作我们要操作三次,这个时候操作也是繁琐的,我的想法是我能不能只要操作一次,maven能够把我所有的maven分支项目都能够编译一次呢?maven还是很强大的,答案是肯定的,那就是maven的聚合特性,我们只需在parent项目中的pom.xml文件中加入以下配置
配置完毕之后,假设我们要同时编译A B C 项目,我们直接只需编译parent项目即可,maven会根据依赖关系自动编译指定的聚合项目
这里需要注意的是,若在parent项目pom.xml 节点下配置新的依赖jar文件,A项目也配置了同样新的依赖jar文件,这个时候应该去掉A项目也配置了同样新的依赖jar文件,先编译parent项目不然会报错,或者先在parent项目pom.xml的节点下去掉../A,先编译parent项目,再加入../A
1.首先说明本人用的是apache-maven-3.3.3
2.假设有A、B、C、三个功能模块的项目,比如都需要用到mybatis.jar,一般我们都会在每一个pom.xml会这样写
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency>
但是有一天假设mybatis.jar 3.2.8这个版本不够稳定,需要升级或者降低版本,那么我们肯定会修改3个pom.xml文件,这样显得有点操作繁琐,维护起来不是很方便。那我们就可以利用maven的一个特性”继承”,在java中继承是用extends关键字,maven使用的配置,所以我们可以单独建一个parent maven项目,然后在parent项目中的pom.xml加入以下配置
依赖文件管理表示以下配置依赖jar文件版本统一由此项目管理,倘若其它项目继承了此项目,若其它项目在配置maven依赖jar并还配置了节点,maven就会给出警告,此时A B C 项目就可以继承parent项目,只需在A B C各项目的pom.xml加入以下配置即可
<parent> <groupId>kd_ws</groupId> <artifactId>kd_ws_parent</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent>
配置了之后,由于 下面配置的jar文件并不会共享给子项目,所以A B C 的pom.xml 还是需要配置mybatis.jar的maven依赖,只是要去掉节点,变成了下面这样
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </dependency>
这样maven的继承就ok了,以后要升高或者降低mybatis.jar的版本,只需要更改parent项目中pom.xml文件的依赖文件版本即可
3.我们知道有A B C 三个项目假设发布的时候我们肯定需要编译A B C 三个项目 分别打成不同jar文件,但是我们同样的操作我们要操作三次,这个时候操作也是繁琐的,我的想法是我能不能只要操作一次,maven能够把我所有的maven分支项目都能够编译一次呢?maven还是很强大的,答案是肯定的,那就是maven的聚合特性,我们只需在parent项目中的pom.xml文件中加入以下配置
<!--聚合 --> <modules> <module>../A</module>(本人用的是eclipse开发工具,项目在同一目录,位置随机应变) <module>../B</module> <module>../C</module> </modules>
配置完毕之后,假设我们要同时编译A B C 项目,我们直接只需编译parent项目即可,maven会根据依赖关系自动编译指定的聚合项目
这里需要注意的是,若在parent项目pom.xml 节点下配置新的依赖jar文件,A项目也配置了同样新的依赖jar文件,这个时候应该去掉A项目也配置了同样新的依赖jar文件,先编译parent项目不然会报错,或者先在parent项目pom.xml的节点下去掉../A,先编译parent项目,再加入../A
相关文章推荐
- SMART原则
- 实习1个半月,近期总结。
- 常见gcc编译警告整理(开始)
- SpringMVC入门学习(一) 环境搭建+实例演示
- wordpress 学习参考网站
- Apktool(2)——使用前必须知道的apk知识
- iOS越狱包
- OGNL表达式struts2标签“%,#,$”
- txt数据转换成pcd数据
- Unity3D 2D游戏开发 官方教程。(十五)
- iOS UITextField 使用全解
- 【蓝桥杯】【高斯日记】
- 使用js Math.random()函数生成指定范围的随机数字
- Build Your Own Images
- DirectShow SDK下载
- Qt入门之信号与槽机制
- CLRS 12.2查询二叉搜索树
- 02. Shell文件权限和脚本执行(Linux权限基础, 用户组)
- Struts2中的ActionContext、OGNL及EL的使用
- 基于JavaScript如何实现ajax调用后台定义的方法