什么是Maven聚合特性?
能够把项目的各个模块聚合在一起构建,这种方式就是聚合。不用我们手动依次install各个模块了,提高工作效率。
现在呢,就把我们之前的【maventest-a】、【maventest-b】、【maventest-c】进行聚合。打开Eclipse,创建新项目【maventest-aggregation】。
打开并编辑【maventest-aggregation】的pom.xml:
- 将<package>标签值改为pom,作为聚合项目的容器,则必须pom;
- 增加<models>标签,将子项【maventest-a】、【maventest-b】、【maventest-c】依次添加。
如图:
Paste_Image.png
保存,并【Run As】→【Maven Build】,输入命令:clean install
Paste_Image.png
运行之后,它会依次将a、b、c打包安装到本地仓库。
Paste_Image.png
这就是聚合了,那么……
什么是Maven的继承特性呢?
能够帮助抽取各模块相同的依赖和插件等配置,在简化 pom 配置的同时,还能促进各个模块配置的一致性。
例如,我们的【maventest-a】、【maventest-b】、【maventest-c】项目都在pom引入了junit依赖。这就导致我们项目很冗余。那怎么办呢?这时就需要用到继承特性,创建项目父模块【maventest-parent】。
在【maventest-parent】的pom.xml中添加<dependencyManagement>标签。这个标签在pom.xml常用元素中讲到过。
Paste_Image.png
添加好后,就是这样的:
Paste_Image.png
为了防止以后pom.xml变庞大,版本号不易找到和修改,可以将junit的version的值,单独提出来到<properties>标签里,并使用EL表达式引用。
Paste_Image.png
然后将<package>值改为pom,作为父模块这个值必须为pom。又因为是父模块,一般是不在main和test里写代码的,这两个目录,都可以删除。
最后【maventest-parent】的pom.xml:
Paste_Image.png
左侧目录结构:
Paste_Image.png
父模块完成,打开子模块。以【maventest-a】为例:
- 在它的pom中增加<parent>标签并把【maventest-parent】的坐标添加进去。
- 将junit依赖的版本号和依赖范围删掉,保留<groupId>和<artifactId>。这是因为,父模块虽然引入了junit,但是还需要子模块声明<groupId>和<artifactId>才可以使用。
如图:
Paste_Image.png
Paste_Image.png
作者:鲁克巴克诗
链接:https://www.jianshu.com/p/d0c6e731ca46
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。