您的位置:首页 > 其它

maven的继承和聚合

2015-12-29 10:33 204 查看
本人之前也用过maven的开发环境来开发项目,但是没有采用分布式开发,都是单独的一个项目做的开发。公司要走移动端开发,需要重新搭建一个移动端后台的框架,正好利用这个机会用maven做了一次分布式开发项目的模式,这种开发模式本人觉得最大的好处是功能细分,代码可以重复使用,维护项目特方便,发布项目也方便,充分解耦

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: