实战,读懂maven <scope>

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


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

image.png

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

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

相关文章
|
3月前
|
XML 前端开发 Java
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
这篇文章是SpringMVC框架的入门教程,详细指导了如何在IDEA中使用Maven和Tomcat创建SpringMVC工程,包括添加依赖、配置web.xml、编写控制器、创建配置文件、配置Tomcat服务器以及进行基本的测试,展示了一个简单的Hello SpringMVC示例。
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
|
6月前
|
XML Java Maven
【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)(二)
【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)
118 0
|
5月前
|
存储 搜索推荐 Java
rodert教你学Maven-实战这一篇就够了(上)
rodert教你学Maven-实战这一篇就够了
50 1
 rodert教你学Maven-实战这一篇就够了(上)
|
5月前
|
XML Java 数据库连接
技术笔记:Maven的pom.xml(坐标的gav、依赖的scope)
技术笔记:Maven的pom.xml(坐标的gav、依赖的scope)
168 0
|
5月前
|
Java Linux 网络安全
在Linux上搭建Maven仓库的实战教程
在Linux上搭建Maven仓库的实战教程
334 0
|
5月前
|
存储 Java 测试技术
rodert教你学Maven-实战这一篇就够了(下)
rodert教你学Maven-实战这一篇就够了
34 0
|
6月前
|
Java Maven
Maven实战 Item4 -- Maven核心概念_maven junit version(1)
Maven实战 Item4 -- Maven核心概念_maven junit version(1)
|
6月前
|
前端开发 JavaScript Java
Maven实战 Item3 -- Maven项目构建2_构建一个maven2 3项目
Maven实战 Item3 -- Maven项目构建2_构建一个maven2 3项目
|
6月前
|
JavaScript 安全 前端开发
Maven实战 Item2 -- Maven项目构建(手动)_term2 配置maven(2)
Maven实战 Item2 -- Maven项目构建(手动)_term2 配置maven(2)
|
6月前
|
前端开发 Java Maven
Maven实战 Item2 -- Maven项目构建(手动)_term2 配置maven(1)
Maven实战 Item2 -- Maven项目构建(手动)_term2 配置maven(1)