Maven系列 - 覆盖父级pom文件某jar包版本
一般公司都会有统一的父级pom文件,指定一些通用的jar版本,比如fastjson,假如出现漏洞(最近fastjson就出现了漏洞),需要升级fastjson包,具体有哪些方式呢
(1)公司统一升级父级pom文件的fastjson版本,对应应用升级父级pom文件版本 (2)对应应用不升级父级pom文件版本,仅指定升级fastjson版本
(1)首先,第一种方式最简单方便,但是有个实际的情况,除非公司把原先所有的父级pom版本都升级相应的fastjson包,否则的话,假如仅新增一个版本号,比如父级pom文件版本目前最高为1.4.16,升级到1.4.17(该父级pom文件版本对应fastjson版本为漏洞修复后的版本)其他低于1.4.16的,都需要升级到1.4.17,版本跨度低的还好,有些跨度很高,很容易出现问题
(2)所以,肯定有同学为了保险起见,采用第二种方案,不升级父级pom文件版本,仅指定升级fastjson版本 但是这种方案,对应简单的应用还好,复杂的应用,你甚至很难找到哪些子模块,间接依赖了fastjson,改了一个,发现还有,痛苦万分,就是升级一下jar包,硬是整了半天,还是不行,哈哈
(iii) 下面有种非常方便的覆盖方式,直接覆盖父级pom文件里面定义的fastjson版本,在本应用pom文件(如果本应用有多个子模块,需在父pom文件)重新定义版本配置即可,比如下面这样
<properties>
<fastjson.version>1.2.83</fastjson.version>
</properties>
(iii) 或者在本应用pom文件(如果本应用有多个子模块,需在父pom文件)重新定义maven配置,比如下面这样
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<dependencies>
<dependencyManagement>
当然,至于该用哪个,取决于你们公司统一的父级pom文件定义fastjson版本怎么配置
|