maven使用
最近在看一个开源项目,感叹项目工程目录之整洁,功能模块划分之清晰.目前看下来,有两点关于Maven的使用很有意思,记录分享下.
·
前言
最近在看一个开源项目,感叹项目工程目录之整洁,功能模块划分之清晰.目前看下来,有两点关于Maven的使用很有意思,记录分享下.
使用BOM统一管理依赖
以前做依赖的统一管理是在父项目的pom文件中,统一定义依赖及其版本,在子模块中需要时直接引入依赖无需指定版本version.
<!--parent.pom-->
<properties>
<alibaba.fastjson.version>2.0.10</alibaba.fastjson.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${alibaba.fastjson.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--sub.pom-->
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
</dependencies>
经历过几家公司,没有几个团队把项目中的依赖管理的清晰明了的,上面这样管理依赖个人觉得已经很清晰了.看到这个开源项目是把父项目中的依赖管理单独成一个子模块,然后在父项目的依赖管理标签中再引入该模块,其他子模块引入依赖的方式不变.个人还是很喜欢这种职责单一的模块划分方式的.
<!--parent.pom-->
<properties>
<dependency.manager.version>1.0</dependency.manager.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.wyy</groupId>
<artifactId>dependency-manager</artifactId>
<version>${dependency.manager.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--dependency-manager.pom-->
<properties>
<alibaba.fastjson.version>2.0.10</alibaba.fastjson.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${alibaba.fastjson.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
模块再划分,解决模块循环依赖
前不久才解决过模块的循环依赖,用的是依赖倒置的原则.而这里,可以通过对模块进行再划分,来解决Maven打包时报错的问题.
// a模块引入b模块,b模块引入a模块,肯定会报错:模块循环依赖
// a模块再分为a-api 和 a-biz 模块
// b模块也分为b-api 和 b-biz 模块
// 这样在a-api模块中引入b,在b-api中引入a就可以正常打包.妙啊~
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)