maven几个依赖生效范围的解释

Maven的生命周期包括:clean、validate、compile、test、package、verify、install、site、deploy,其中需要注意的是:执行后面的命令时,前面的命令自动得到执行,(其中,也可以跳过其中的步骤,如:test,在mvn install或mvn package后加上-Dmaven.test.skip=true或-DskipTests即可)。

生命周期 描述
clean 清理。遇到问题多清理
validate 验证。验证项目是否正确。
compile 编译。执行编译,源代码编译在此阶段完成。
test 测试。使用适当的单元测试框架(例如JUnit)运行测试。
package 打包。打成jar或war包,其中会自动进行clean+compile。
verify 检查。对集成测试的结果进行检查,以保证质量达标。
install 安装。将本地工程jar包上传安装到本地仓库,以供其他项目使用。
site 站点。进行站点部署。
deploy 部署。拷贝最终的工程包到远程仓库或私服中,以共享给其他开发人员和工程。

关于scope依赖范围
Maven的生命周期存在编译、测试、打包这些过程,其中有些依赖只是用于测试,如junit,有些依赖编译时是用不到的,只有运行的时候才能用到,比如mysql的驱动包在编译期就用不到(编译期用的是JDBC接口),而是在运行时用到的。还有些依赖,编译期要用到,而运行期不需要提供,因为有些容器已经提供了,比如servlet-api在tomcat中已经提供了,我们只需要的是编译期提供而已。
其中scope就可以解决上面的问题,即:scope参数用来控制打包的时机,scope有如下几个值,分别代表如下:

依赖范围 描述
compile 默认的scope,运行期有效,需要打入包中。
provided 编译期有效,运行期不需要提供,不会打入包中。
runtime 编译不需要,在运行期有效,需要导入包中。(接口与实现分离)
test 测试需要,不会打入包中。
system 非本地仓库引入、存在系统的某个路径下的jar。(一般不使用)

参考:

  1. http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
  2. https://www.runoob.com/maven/maven-build-life-cycle.html
  3. https://www.cnblogs.com/wangyonghao/p/5976055.html
posted on 2021-11-24 16:18  阿不思的落胤  阅读(276)  评论(0编辑  收藏  举报