浅谈Maven聚合工程的打包

一、Maven聚合工程的理解

何为Maven聚合工程,所谓聚合二字就是Maven项目不在单独只有一个,而是存在多个Maven工程,这多个工程之间不是彼此独立,而是存在着关联关系。一般来说,对于使用聚合工程构建的项目,存在一个父工程,父工程主要的作用在于对子工程的所用的依赖进行管理,其次还能设置子工程通用的配置,对于依赖管理可以这样解释,就是在父工程提前声明好子工程可能需要使用的依赖,在父工程中指定其版本,如果子工程需要使用,直接引用父工程中的依赖即可,不需要再去指定版本,这样的实际意义是规范项目中各个模块依赖版本,避免因依赖版本不一样,而产生的依赖冲突问题,另外还可以配置一些全局参数,比如说字符集的设置。下面是一个简单的父工程例子:

 二、Maven聚合工程的打包

有两种方式:

方式一:直接对父工程进行打包,像下面这样:

 这样做,打包类型为jar的子工程都会进行打包,查看Maven的打印日志就能发现:

在这个例子中依次打包工具模块,然后依赖工具模块的其它模块,也就是说其实是得先有“元依赖”,因为在一些模块中依赖这些“元依赖”,如果不存在这些依赖的话,就打包失败,“元依赖”是相对的,就是这样就连接起各个模块,但是这种打包父工程的方式,其实只是打包到我们的项目中,并没有放到我们的本地仓库中去,这也就是package的作用,打包到本模块中。

方式二:打包我们所需要的模块
注意:对于模块中依赖了其它模块时,是不能直接打包的,就会出现下图报错:

 

这是因为在打包这个模块时,对于pom中的依赖都会去从本地仓库中去找,所以如果还未将依赖存入到本地仓库中就会发生问题,那么如何将依赖的模块存入到本地仓库中呢?其实是由install命令即可,使用这个命令后,会发现依赖模块已经存到本地仓库中了,如下图:

 

注意这里不能只是对依赖模块使用package打包命令,这样这是打包到模块中,并未存到我们的本地仓库中。 但这里还是要注意一下,并不是说本地仓库中存在模块依赖就行了,还得在模块target下面存在jar包,也就是说打包成功得满足两个条件,一是本地仓库存在,二是被依赖模块中已经存在模块依赖,而正好执行install命令就能同时满足这两点,只是本地仓库中存在jar,而target中不存在的话,就同样会报错,如下图:

 三、总结

1. 要想简单,直接打包父工程就行了,就不需要管事了,在去使用子模块即可
2. 如果不想打那么多的包时,只需要某一个或多个jar包时,对该模块中所有的依赖模块通通执行install命令即可

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值