实战,读懂maven <scope>

简介: 实战,读懂maven <scope>
场景:在添加日志时发现项目没有引用fastjson包,后来发现其实项目已经引用了,但是不是在所在模块引用的,于是看了下引用fastjson包的依赖,发现了 runtime
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.3</version>
        <scope>runtime</scope>
    </dependency>


AI 代码解读

一般来说,scope是比较少使用的,但是这个怎么这么不一般,查了相关资料,发现runtime实际上是在运行时时才进行编译,如果不是运行时时不会进行编译的。

image.png

例子说明jdbc的驱动适用了runtime的scope,是因为jdbc驱动本身是使用反射Class.forName来执行的,以为着如果程序不运行,编译jdbc驱动其实意义不大,而且编译这部分代码其实也会增大程序的开销,比如影响程序的每次编译时间,但是这样写需要相关的代码每次都是在运行时才被编译成class文件,所以会增加运行时程序的开销,对于不是动态生成的类是不能使用的。

fastjson源码中不涉及到动态生成代码,比如使用反射,动态代理。所以项目中使用runtime是不正确的。

相关文章
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
这篇文章是SpringMVC框架的入门教程,详细指导了如何在IDEA中使用Maven和Tomcat创建SpringMVC工程,包括添加依赖、配置web.xml、编写控制器、创建配置文件、配置Tomcat服务器以及进行基本的测试,展示了一个简单的Hello SpringMVC示例。
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
Maven实战进阶(01)面试官:Maven怎么解决依赖冲突?| 有几种解决方式
本文介绍了Maven的核心功能和依赖管理技巧。Maven是基于项目对象模型(POM)的构建工具,具备跨平台、标准化、自动化等特性。其三大核心功能为依赖管理、仓库管理和项目构建。依赖管理通过pom.xml文件引入第三方组件并自动下载;仓库管理涉及中央仓库、私服和本地仓库;项目构建则通过生命周期管理编译、测试、打包等流程。文章还详细讲解了依赖冲突的解决方法,包括默认规则、手工排除和版本指定等策略。
rodert教你学Maven-实战这一篇就够了(上)
rodert教你学Maven-实战这一篇就够了
65 1
 rodert教你学Maven-实战这一篇就够了(上)
技术笔记:Maven的pom.xml(坐标的gav、依赖的scope)
技术笔记:Maven的pom.xml(坐标的gav、依赖的scope)
257 0
在Linux上搭建Maven仓库的实战教程
在Linux上搭建Maven仓库的实战教程
453 0
rodert教你学Maven-实战这一篇就够了(下)
rodert教你学Maven-实战这一篇就够了
60 0
Maven实战 Item4 -- Maven核心概念_maven junit version(1)
Maven实战 Item4 -- Maven核心概念_maven junit version(1)
Maven实战 Item2 -- Maven项目构建(手动)_term2 配置maven(1)
Maven实战 Item2 -- Maven项目构建(手动)_term2 配置maven(1)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等