解决在test以外的目录下导入junit无效

以上引用来自src目录下的文件,可以看到,和junit有关的导入都飘红,但明明junit已经被正确导入进了项目中。

再看右侧的Maven的依赖下方,junit的右边有一个很不起眼的(test)

这是因为junit作为测试框架,可能包含仅适用于测试环境的代码,这在生产环境中可能产生安全问题。所以被限制了在了test这一作用域。

如果想在src目录下也能使用,需要手动改为<scope>compile</scope>,即

修改之后,File > Invalidate Caches > Invalidate and Restart, 看到原先飘红的语句不再飘红。

注:

在 Maven 的 `pom.xml` 文件中,依赖的 `scope` 元素用于指定依赖的可见性和在构建生命周期中的使用范围。`scope` 可以有以下几种值:

  1. compile:这是默认的 scope,用于项目的编译和执行阶段。`compile` 依赖在所有的类路径中都是可用的,并且它们也会被打包。

  2. provided:用于标记那些由 JDK 或者一个容器提供的依赖,比如 Servlet API 和 Java EE API。这些依赖只在编译和测试时可用,不会被打包,因为它们应该由运行环境提供。

  3. runtime:这些依赖不在编译时需要,但在运行时需要。例如,JDBC 驱动就是典型的 `runtime` 依赖。

  4. test:这些依赖仅在编译和运行测试代码时使用。它们在正常的编译和运行阶段都不可用。

  5. system:这是一种特殊的 scope,用于从系统的某个路径中提供依赖。它类似于 `provided`,但需要通过 `<systemPath>` 指定依赖的具体位置。这种方式通常不推荐,因为它依赖于机器的特定配置。

  6. import(仅在 `<dependencyManagement>` 中使用):这不是用于具体依赖,而是在一个项目的 `dependencyManagement` 部分中使用,用于导入其他项目的 `dependencyManagement` 部分,以便统一管理项目组或组织中多个项目的依赖版本。

每种 scope 都有其特定的使用场景,选择适当的 scope 可以帮助确保项目的依赖管理更加高效和清晰。

相关推荐
亮1118 分钟前
GITLAB跑gradle项目 不借助maven-publish直接上传到nexus私人仓库
java·gitlab·gradle·maven
Aric_Jones3 小时前
lua入门语法,包含安装,注释,变量,循环等
java·开发语言·git·elasticsearch·junit·lua
极小狐11 小时前
极狐GitLab 通用软件包存储库功能介绍
java·数据库·c#·gitlab·maven
Meta3913 小时前
解决IDEA Maven编译时@spring.profiles.active@没有替换成具体环境变量的问题
spring·maven·intellij-idea
计算机学姐1 天前
基于SpringBoot的小区停车位管理系统
java·vue.js·spring boot·后端·mysql·spring·maven
console.log('只想发财')1 天前
新手安装java所有工具(jdk、idea,Maven,数据库)
java·maven·intellij-idea
贺函不是涵1 天前
【沉浸式求职学习day36】【初识Maven】
java·学习·maven
Minyy112 天前
“爱生活”小项目问题总结
java·数据库·spring boot·spring·maven·intellij-idea
程序员阿鹏2 天前
Spring Boot项目(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot前后端分离)
java·前端·vue.js·spring boot·后端·spring·maven
极小狐2 天前
如何使用极狐GitLab 软件包仓库功能托管 maven?
java·运维·数据库·安全·c#·gitlab·maven