仅将 Maven 依赖项声明为测试运行时

2023-12-24

将 Maven 依赖项声明为仅用于测试运行时(而不是测试编译)类路径的最佳方法是什么?

具体来说,我想要slf4j-api(日志门面)作为典型的编译范围依赖项,但我想要slf4j-simple(适用于单元测试的准系统实现)仅在测试运行时类路径上(测试编译不需要)。我一直在这样做:

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <scope>test</scope>
</dependency>

然而,这样做的缺点是dependency:analyze报告slf4j-simple未使用,可能是因为编译不需要它:

[WARNING] Unused declared dependencies found:
[WARNING]    org.slf4j:slf4j-simple:jar:1.7.7:test

我无法使用runtime依赖项,因为我不希望该依赖项传递继承(例如,下游依赖项可以使用 log4j 等代替)。我试过runtime with optional=true,但这会导致相同的警告。

(请注意,我还可以设置ignoreNonCompile对于依赖插件,但这似乎是一个非常生硬的工具,会隐藏其他潜在的问题。)


这里没有任何范围可以完全满足您的要求;test是最好的可用选择。

A test-runtime之前已请求范围(回复:需要测试运行时范围吗? https://mail-archives.apache.org/mod_mbox/maven-users/200811.mbox/%3C17608340.3674701226307519843.JavaMail.adm-moff@moffice8.nsc.no%3E)并且建议的解决方法正是ignoreNonCompile您已经发现的配置。

dependency:analyze已经有一些限制(“未检测到某些情况(常量、仅保留源的注释、javadoc 中的链接)” http://maven.apache.org/shared/maven-dependency-analyzer/)。您可能必须接受任何test它警告的范围依赖性是误报。

(You could将测试的定义拆分为一个单独的模块,该模块不会slf4j实现依赖项,然后在另一个模块中运行它们。我认为这不值得。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅将 Maven 依赖项声明为测试运行时 的相关文章

  • HashMap不写入数据库

    我尝试在我的数据库中写入 但只写入发件人和消息 我不明白为什么会发生这种情况 我认为问题出在我使用 sendMessage 的地方 我认为问题是我没有什么可以做的读 写其他用户的主键 我在数据库中写入消息的活动 public class M
  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • 禁用 Eclipse Java 调试器的热代码替换 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Eclipse 中禁用热代码替换 https stackoverflow com questions 2594408 how do i disable hot code replace in
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 主线程如何在该线程之前运行?

    我有以下代码 public class Derived implements Runnable private int num public synchronized void setA int num try Thread sleep 1
  • 如果使用的 JVM 是 x86 或 x64,则以不同的方式解决 Maven 依赖关系?

    我设置了一个 Maven 存储库来托管一些 dll 但我需要我的 Maven 项目根据使用的 JVM 是 x86 还是 x64 下载不同的 dll 例如 在运行 x86 版本 JVM 的计算机上 我需要从存储库下载 ABC dll 作为依赖
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • Java 8 中函数式接口的使用

    这是来自的后续问题Java 8 中的 双冒号 运算符 https stackoverflow com questions 20001427 double colon operator in java 8其中 Java 允许您使用以下方式引用
  • Java 数组的最大维数

    出于好奇 在 Java 中数组可以有多少维 爪哇language不限制维数 但是JavaVM规范将维度数限制为 255 例如 以下代码将无法编译 class Main public static void main String args
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop

随机推荐

  • 使用什么算法/方法来同步多个视频播放器

    动机 我目前正在尝试同步两个联网的 raspi 上的两个视频 我尝试从桌面 http 和 udp 进行实时流式传输 但每个 raspi 仍然以明显的延迟打开流 接下来我尝试在 raspi 上安装 vlc 并与桌面 vlc 同步 但这也不起作
  • 如何从 PHP 日期时间获取 unix 时间戳?

    我正在尝试使用 PHP 获取 unix 时间戳 但它似乎不起作用 这是我尝试转换为 unix 时间戳的格式 PHP datetime 2012 07 25 14 35 08 unix time date Ymdhis strtotime d
  • 如何在 Linux 上拦截来自 USB 设备的消息?

    我有一个流行的绘图板 我用 USB 连接到我的电脑 连接后 平板电脑会检测手部动作并相应地操纵指针 在某个地方 平板电脑正在将这些数据传输到我的计算机 我的目标是拦截这些传输并在处理数据后操纵鼠标 我发现的流行语是 设备驱动程序 and H
  • HTML 步进器中单位的显示

    我希望用户输入带有 cm kg 或 等单位的数字 这可以在 jQuery UI 中完成 Example http jqueryui com spinner currency 但是 我想用纯html实现它 例如 input display i
  • 读取列中包含逗号的 CSV 文件

    我有一个包含 6 列的 csv 文件 其中一列的文本以逗号分隔 例如 BOLT RD HD SQ SHORT NECK METRIC 当我在 R 中读取该文件时 该列发生溢出 随后数据移动到新行 下面我粘贴几行 014003051906 E
  • CheckboxSelectMultiple 的初始值

    我正在使用以下方法初始化表单 MultiSubscriptionForm initial email user email 在我的表单中 我还想初始化一个 CheckboxSelectMultiple 小部件来检查一组复选框 我怎样才能做到
  • Visual Studio 2015 更新 1 的 MicroUpdate 1.1

    在全新的 Windows 7 Ultimate 64 位计算机上通过 MSDN 下载的 ISO 映像安装 Visual Studio 2015 Enterprise 后 安装程序最终显示以下错误消息 MicroUpdate 1 1 for
  • Facebook iOS PresentRequestsDialogModallyWithSession 返回选定的朋友

    我正在开发一个 iOS 应用程序 我希望能够通过 facebook 向我的应用程序发送邀请 我设法使用 PresentRequestsDialogModallyWithSession 但我也希望我的应用程序知道邀请发送给了谁 这可能吗 是的
  • 创建并返回可分配给对象的特定键的值

    我有以下代码 应该 在这个简化的应用程序中 返回一个可分配给特定键的值Obj interface Obj foo number bar string const foo createValueOfObjKey foo const bar c
  • 所有 svn 修订号 <=> git SHA-1 提交哈希值的映射

    When git svn需要重建其内部地图 它输出想要的信息STDERR Rebuilding git svn refs remotes origin trunk rev map XXXXXXXX XXXX XXXX XXXX XXXXXX
  • 对小型设备中的列重新排序 Bootstrap 4

    不幸的是 Beta 版本中的 Bootstrap 下降了push and pull 类 所以我不知道如何重新排序 xs 和 sm 设备中的列 列 1 列 2 列 3 to 第 1 列 第 3 列 第 2栏 有任何想法吗 有新的重新排序 ht
  • lambda 函数返回 false

    我在 pyqt 中有一个 python 程序 带有一个带有以下内容的按钮 this 1 k button clicked connect lambda x this self testFunction str x 当我按下按钮时我得到tes
  • 如何使用 node.js 代码在 Firestore 中创建集合

    我不知道如何使用 node js firestore api 创建新的集合 有什么建议么 当您向集合添加 写入文档时 会自动创建集合 不需要 也不需要 API 显式创建集合 来自文档 https firebase google com do
  • 如何在 PrimeFaces 数据表列中显示带换行符(漂亮的打印)的 XML 内容?

    如何在 PrimeFaces 数据表列中显示带换行符 漂亮的打印 的 XML 内容 我的 XML 内容已经是漂亮的打印格式 当从 FacesConverter 执行 System out println 时 我可以通过换行看到它 在将字节呈
  • 存储过程和 LINQ、Dbml 文件无法解释结果集

    我有几个存储过程 当它们添加到我的 dbml 中时 似乎 LINQ 在幕后无法解释结果集 而只会将结果映射为 int 然后我必须自己创建结果类 这很痛苦 而且每次添加到 dbml 时我都必须去更改设计器文件 因为它会重新加载它并将结果映射回
  • java导入错误“类型android.widget.Filter.FilterResults不可见”

    这个问题已经被问过 类型 android widget Filter FilterResults 不可见 https stackoverflow com questions 18135039 the type android widget
  • .gitignore 文件中的路径有何不同?

    我一直在使用 git 但仍然对 gitignore文件路径 那么 以下两条路径有什么区别 gitignore file tmp public documents 我可以理解tmp 将忽略其中的所有文件和文件夹 我对吗 但是第二行路径是什么意
  • 如何从绝对路径获取相对路径

    我的应用程序中有一部分显示用户通过 OpenFileDialog 加载的文件路径 它占用了太多空间来显示整个路径 但我不想只显示文件名 因为它可能不明确 所以我更愿意显示相对于 assembly exe 目录的文件路径 例如 程序集位于C
  • Apache启动libphp7.3.so找不到

    我已经安装了 php 7 3 和 apache2 但是当我尝试启动 apache2 时 出现此错误 service apache2 start apache2 Syntax error on line 146 of etc apache2
  • 仅将 Maven 依赖项声明为测试运行时

    将 Maven 依赖项声明为仅用于测试运行时 而不是测试编译 类路径的最佳方法是什么 具体来说 我想要slf4j api 日志门面 作为典型的编译范围依赖项 但我想要slf4j simple 适用于单元测试的准系统实现 仅在测试运行时类路径