maven <dependency>中的<scope>:import、test、system 作者:马育民 • 2021-10-16 09:30 • 阅读:10071 # import maven 和Java一样都是 **单继承** 机制,在maven的pom文件中只能有一个``标签,继承一个父工程,然后父工程通过`dependencyManagement`管理依赖,子工程选择性继承 ### 问题1 **提出问题:** 在 springboot 应用,要求继承父工程`spring-boot-starter-parent`,如下: ``` org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE ``` 但是如果想 **继承其他父工程**,或者 **不想继承父工程**,就无法实现了 **解决问题:** 通过`import`导入工程 ``` org.springframework.boot spring-boot-dependencies 2.2.2.RELEASE pom import ``` ### 提出问题2 **提出问题:** 在聚合工程中,一般父工程在`dependencyManagement`管理大量依赖,繁杂混乱,不方便管理 **解决问题:** 为了更清晰的管理,将这些依赖分类写在不同的工程中,用到哪个功能时,就通过`import`导入该工程 ### 总结 好处: 1、单一职责原则,根据依赖的分类,细化每一个单一职责的pom文件 2、解决单继承问题,通过import pom文件达到依赖的目的(典型的非继承模式),从而不用从父类中引用依赖 3、父模块的pom就会非常干净,容易维护 # test (测试范围) `test` 范围依赖 **编译** 和 **运行时** 都不需要,只有在 **测试编译** 和 **测试运行** 阶段可用。 ``` junit junit 4.11 test ``` # system (系统范围) 不从maven仓库获取该jar,而是通过 `systemPath` 指定该jar的路径 **注意:**该范围是不推荐使用的(你应该一直尽量去从公共或定制的 Maven 仓库中引用依赖)。 原文出处:http://malaoshi.top/show_1IX23D0t2B7z.html