Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。
下面介绍一下Maven依赖管理范围scope的几种类别
- compile
默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖,打包的时候也需要包含进去。 - test
依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit - runtime
表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段。 - provided
打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作。例如servlet-api,没有它编译不通过,但是打包的时候由于tomcat容器会提供,所以打包的时候不需要把它加进去。 - system
从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径。用的很少。