Maven已经导入Junit包,但是还是无法使用注解

Maven已经导入Junit包,但是还是无法使用注解

背景:

  • 导入了Junit的依赖
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
  • 源代码中使用@Test注解,发现无法使用,找不到对应的包
    效果图

解决:

  • 发现是引入依赖的时候规定了作用域只有test(表示只有在测试编译和测试运行时需要)
  • 解决办法1:去除此处作用域现在
  • 解决办法2:将main/java/文件夹内的源代码移动至/main/test中也可解决

拓展:

当然,Maven 依赖的 <scope> 标签可以设置不同的作用范围,用于控制依赖的使用范围。以下是 Maven 依赖管理中常见的几种 <scope> 类型及其含义:

Scope描述
compile默认范围。依赖会被包括在编译、测试和运行时的类路径中,并会被打包到最终构建中。
provided依赖在编译时需要,但在运行时由容器或其他环境提供,因此不会被打包到最终构建中。常用于 Servlet API 或类似库。
runtime依赖在编译时不需要,但在运行时需要。比如数据库驱动程序。
test依赖仅在测试编译和测试运行时需要,不会被包含在生产代码中或最终构建中。
system依赖来自系统的特定路径,需要通过 systemPath 指定路径。此作用范围已不推荐使用。
import用于导入依赖管理的 POM 文件中的依赖。常用于 BOM(Bill Of Materials)管理。

详细说明

  • compile: 默认的作用范围,适用于所有代码(包括生产和测试代码),在打包时会被包含在最终的构建中。

  • provided: 这个作用范围的依赖在编译和测试时需要,但在运行时由容器提供。例如,Servlet API 在容器(如 Tomcat)中已经提供了,因此在构建时你需要它,但不需要打包到你的应用中。

  • runtime: 适用于那些在运行时必需,但在编译时不需要的依赖。例如,数据库驱动程序。它们在编译时不必要,但在运行时需要。

  • test: 仅在测试时需要的依赖,比如测试框架(JUnit)和模拟工具(Mockito)。这些依赖不会被打包到生产版本中。

  • system: 这种作用范围要求你指定一个系统路径来获取依赖,通常不推荐使用,因为它打破了 Maven 的可移植性原则。

  • import: 这个作用范围用于导入其他 POM 文件中的依赖管理部分,通常用于统一管理多个模块的依赖版本,例如通过 BOM 文件。

根据项目的不同需求,选择合适的 scope 可以帮助你更好地管理依赖和优化构建过程。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

redvelet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值