为了更清晰的设计以及更高的重用性,软件设计人员旺旺会采用各种方式对软件划分模块。在maven中使用继承和聚合来简化模块的配置和操作。二者的异同如下:
1. 聚合模块用来简化项目的编译打包等操作,可以通过直接操作聚合模块,达到操作所有模块的目的;继承主要是为了简化配置以及保存各个模块的统一性,可以将公告的部分抽取出来放到父工程中,如依赖的版本,插件的设置以及其他扩展属性的设置。
2. 需要单独建立继承和聚合模块用了支撑聚合和继承功能且该模块的打包方式(packaging)都是pom。一般而言会将继承和聚合放在同一个模块中,用来同时提供聚合和继承功能。
3. 为了实现通过聚合模块操作所有子模块,聚合模块需要依赖各个子模块,需要在聚合模块的pom中通过modules指定子模块的相对路径;为了实现在子工程中使用父工程的配置,子工程需要依赖父工程,需要在子工程中强制指定父工程坐标及其路径,通过parent标签进行指定。另外如果一个工程没有指定父工程,其默认指定超级pom(maven中顶级工程,相当于与java中的Object)。
4. 项目中的各个模块最好有统一的groupId和统一的version。通过在父工程中指定groupId和version可以很容易些实现这一点。
5. 为了减少包冲突和插件的冲突,最好在父工程中指定包的版本和插件的设置。dependencyManagement和pluginManagement。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/191031.html