在Maven中,我们可以通过dependencyManagement把Jar包版本进行统一管理,以后各项目引用组件时,就不用标注组件的版本号了。这为解决多项目版本冲突问题带来了很大的便利。
那么在Gradle中,是否也可以实现Maven的这个特性呢?答案是肯定的。看了网上的一些资料,发现有些方法比较绕,感觉思路不是很对。其实在官网上就有介绍这个问题,在这里也和大家再做一个分享。
1)创建一个项目,里面只需一个build.gradle文件即可。待会我们把要管理的依赖及其版本都封装到这个gradle脚本中,最后把它打包成POM文件,发布到Maven私服中。
build.gradle需要先引用java-platform和maven-publish插件;然后在dependencies的constraints方法里,配置要统一管理的依赖(这里以hutool-core的5.7.14版为例);最后在publishing方法里,配置POM文件的GAV坐标信息,以及Maven私服的信息。
2)脚本配置完成后,IDEA的Gradle Task面板中,就会出现我们刚才配置的发布任务。我们选择把它发布到Maven私服中
可以看到Maven私服中已经成功上传了我们刚才配置的依赖
3)最后就是怎样使用的问题了。在dependencies方法里,通过implementation platform,引入我们刚才上传的依赖管理文件。之后再声明依赖时,就可以不加版本号了。除了用platform引入依赖管理文件外,也可以用enforcedPlatform来引入,区别是,后者会强制使用依赖管理文件中所声明的版本号。
至此,我们就用Gradle完美地实现了Maven中DependencyManagement的效果了。