解决 Gradle 构建错误:Could not get unknown property ‘withoutJclOverSlf4J’

解决 Gradle 构建错误:Could not get unknown property ‘withoutJclOverSlf4J’

在构建 Spring 源码或其他基于 Gradle 的项目时,可能会遇到如下错误:

Could not get unknown property 'withoutJclOverSlf4J' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

本文将详细解析该错误的原因,并介绍如何处理此问题。


错误解析

该错误信息表明,在项目的某个 Gradle 构建脚本中,尝试使用名为 withoutJclOverSlf4J 的属性,但 Gradle 在当前依赖处理器(DependencyHandler)中找不到这个属性。

例如,在某处依赖声明中可能存在类似下面的代码:

testCompile("org.apache.tiles:tiles-core:${tiles3Version}", withoutJclOverSlf4J)

这行代码的意思是,在添加 tiles-core 依赖时,额外传入一个配置参数 withoutJclOverSlf4J,目的是排除某些传递依赖(通常是为了排除日志桥接库 jcl-over-slf4j)。然而,如果没有在项目中定义该属性,就会导致 Gradle 报出“unknown property”的错误。


错误原因

出现此错误的主要原因有以下几点:

  1. 属性未定义
    withoutJclOverSlf4J 是一个自定义属性,通常用于在添加依赖时对传递依赖进行排除。但如果在构建脚本中没有对其进行定义,Gradle 就无法识别这个属性,进而报错。
  2. 加载顺序问题
    如果该属性定义在某个配置文件中,但加载顺序不对,导致在使用该属性时尚未定义,也会出现类似问题。
  3. 拼写或作用域错误
    如果属性名称拼写错误,或者定义的作用域不正确,也会导致 Gradle 找不到该属性。

处理方式

1. 定义 withoutJclOverSlf4J 属性

解决该问题的最直接方法是在项目的根 build.gradle 文件中使用 ext 块定义该属性。例如:

ext.withoutJclOverSlf4J = { dependency ->dependency.exclude group: "org.slf4j", module: "jcl-over-slf4j"
}

这样定义后,在引用该属性时(例如在 testCompile 声明中),Gradle 就能够正确执行闭包,排除 jcl-over-slf4j 模块。

2. 检查加载顺序

确保上述定义在所有子项目加载之前就已执行。可以将该定义放在根项目的最前面,或者单独放到一个公共的配置文件中,然后在 settings.gradle 或根 build.gradle 中提前加载。

3. 检查拼写和作用域

  • 拼写:确保在定义时和引用时名称完全一致(大小写敏感)。
  • 作用域:如果你在子项目中引用此属性,请确保该属性在根项目中定义后,可以在子项目中访问到。

总结

错误 “Could not get unknown property ‘withoutJclOverSlf4J’” 的根本原因在于在依赖声明中使用了一个未定义的自定义属性。解决方法如下:

  • 在根 build.gradle 文件中定义 withoutJclOverSlf4J,例如:

    ext.withoutJclOverSlf4J = { dependency ->dependency.exclude group: "org.slf4j", module: "jcl-over-slf4j"
    }
    
  • 确保该属性定义在所有子项目加载之前。

  • 检查属性名称是否正确且在整个项目中保持一致。

通过以上方法,Gradle 就能正确识别并使用 withoutJclOverSlf4J 属性,从而避免构建报错。希望这篇文章对你解决问题有所帮助!


参考资料:

blog.csdn.net

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43192.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.4-蜜罐\堡垒机\API接口

1.4-蜜罐\堡垒机\API接口 蜜罐&#xff1a;用来钓鱼或诱惑测试人员的防护系统 bash <(curl -sS -L https://hfish.net/webinstall.sh) # 安装HFISH蜜罐堡垒机&#xff1a; 运维用的&#xff0c;统一管理运维平台;拿下堡垒机就很有可能等于拿下了多个平台 jumpServer一键安…

右值和右值引用【C++】

文章目录 左值引用和右值引用简单介绍左值&#xff1a;右值&#xff1a;左值引用&#xff0c;引用右值右值引用&#xff0c;引用左值为什么强制类型转换之后&#xff0c;右值引用就可以引用左值了呢&#xff1f; 右值引用的作用举个例子理解移动构造和移动赋值的作用&#xff1…

罗杰斯特回归

定义 逻辑回归其实就是原来的线性回归加了激活函数&#xff0c;这个函数其实就是sigmoid函数&#xff0c;把一个回归的连续数值压缩到了0到1的空间&#xff0c;其实只要有函数能够满足把数值压缩到0,1之间就可以&#xff08;因为0到1之间的数值就是概率值&#xff09; 对于分类…

Elasticsearch 高级

Elasticsearch 高级 建议阅读顺序&#xff1a; Elasticsearch 入门Elasticsearch 搜索Elasticsearch 搜索高级Elasticsearch高级&#xff08;本文&#xff09; 1. nested 类型 1.1 介绍 Elasticsearch 中的 nested 类型允许你在文档内存储复杂的数据结构&#xff0c;比如一个…

基于SpringBoot实现的高校实验室管理平台功能四

一、前言介绍&#xff1a; 1.1 项目摘要 随着信息技术的飞速发展&#xff0c;高校实验室的管理逐渐趋向于信息化、智能化。传统的实验室管理方式存在效率低下、资源浪费等问题&#xff0c;因此&#xff0c;利用现代技术手段对实验室进行高效管理显得尤为重要。 高校实验室作为…

leetcode_704. 二分查找_java

704. 二分查找https://leetcode.cn/problems/binary-search/ 1.题目 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示…

python基础学习三(元组及字符串的使用)

文章目录 元组什么是元组元组的创建方式为什么要将元组设计成不可变序列元组的遍历集合集合的相关操作集合操作集合的数学操作集合生成式列表&#xff0c;字典&#xff0c;元组&#xff0c;集合总结 字符串字符串的驻留机制判断字符串的操作方法字符串的比较操作字符串的切片操…

游戏被外挂攻破?金融数据遭篡改?AI反作弊系统实战方案(代码+详细步骤)

一、背景与需求分析 随着游戏行业与金融领域的数字化进程加速,作弊行为(如游戏外挂、金融数据篡改)日益复杂化。传统基于规则的防御手段已难以应对新型攻击,而AI技术通过动态行为分析、异常检测等能力,为安全领域提供了革命性解决方案。本文以游戏反作弊系统和金融数据安…

深入理解 TypeScript 中的类型断言(Type Assertion)

类型断言是 TypeScript 中一个强大而独特的特性&#xff0c;它允许开发者告诉编译器&#xff1a;"我知道这个值的类型是什么&#xff0c;请相信我"。本文将全面探讨类型断言的概念、语法、使用场景、最佳实践以及潜在陷阱&#xff0c;帮助你在 TypeScript 开发中更有…

matplotlib标题比x,y轴字体大,明明标题字体更大?

原始代码&#xff1a; plt.xlabel(训练轮次&#xff08;Epochs&#xff09;, fontsize14, fontweightbold, fontpropertieschinese_font) # 设置中文字体、加大、加粗 plt.ylabel(R值, fontsize14, fontweightbold, fontpropertieschinese_font) # 设置中文字体、加大、加粗…

MySQL DQL,数据查询语言的用法

语法&#xff1a;select 字段名 from 表名 [where <条件>]选择符合条件的记录 group by 字段名表 :分组 having <条件> :选择符合条件的组 order by 字段名表 …

Python练习之抽奖界面

前言 一、代码整体架构分析 1、数据层 (Model) 2、控制层 (Controller) 3、视图层 (View) 二、核心功能实现详解 1、 文件导入功能 1.1、实现逻辑 1.2、代码涉及知识点讲解 1.2.1、wildcard 1.2.2、wx.FileDialog 1.2.3、dlg.ShowModal() 2、抽奖动画控制 1.1、…

Vue3 项目通过 docxtemplater 插件动态渲染 .docx 文档(带图片)预览,并导出

Vue3 项目通过 docxtemplater 插件动态渲染 .docx 文档&#xff08;带图片&#xff09;预览&#xff0c;并导出 预览安装插件示例代码项目目录结构截图实际效果截图 动态渲染 .docx 文档&#xff08;带图片&#xff09;&#xff0c;预览、导出安装插件docx 模板文件内容完整代码…

springmvc redirect 使用https后跳转到了http://域名:443问题处理

最近在处理一个很久之前的项目的时候&#xff0c;由于需要将http升级到https&#xff0c;导致springmvc项目中配置的redirect报错 线上的返回结果是http://abc.test.com:443/jrbac/mobile/wechat.html 通过nginx配置了一下解决了&#xff0c;记录一下 location /jrbac {proxy…

用空闲时间做了一个小程序-二维码生成器

一直在摸鱼中赚钱的大家好呀~ 先向各位鱼友们汇报一下情况&#xff0c;目前小程序已经有900的鱼友注册使用过。虽然每天都有新的鱼友注册&#xff0c;但是鱼友增长的还很缓慢。自从国庆前的文字转语音的工具上线到现在已经将近有1个月没有更新小程序了。但是今天终终终终终于又…

【JavaEE】springMVC返回Http响应

目录 一、返回页面二、Controller和ResponseBody与RestController区别三、返回HTML代码⽚段四、返回JSON五、HttpServletResponse设置状态码六、设置Header6.1 HttpServletResponse设置6.2 RequestMapping设置 一、返回页面 步骤如下&#xff1a; 我们先要在static目录下创建…

【新手初学】SQL注入getshell

一、引入 木马介绍&#xff1a; 木马其实就是一段程序&#xff0c;这个程序运行到目标主机上时&#xff0c;主要可以对目标进行远程控制、盗取信息等功能&#xff0c;一般不会破坏目标主机&#xff0c;当然&#xff0c;这也看黑客是否想要搞破坏。 木马类型&#xff1a; 按照功…

验证Linux多进程时间片切换的程序

​​ 一、软件需求 在同时运行多个CPU密集型进程时&#xff0c;需采集以下统计信息&#xff1a; 当前运行在逻辑CPU上的进程ID每个进程的运行进度百分比 实验程序设计要求&#xff1a; 1. 命令行参数 参数说明示例值n并发进程数量3total总运行时长&#xff08;毫秒&…

Spring笔记03-依赖注入

简述: Spring 依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;是 Spring 框架的核心功能之一&#xff0c;它通过将对象的依赖关系交由 Spring 容器来管理&#xff0c;实现了对象之间的解耦&#xff0c;提高了代码的可维护性和可测试性。 构造器注入示例:…

减少采样空间方法 变成后验概率

又 因为后验概率很难计算 --所以通过引入变分分布来近似 后验概率分布 同时 引入 kl散度来度量 近似的效果好不好 什么是kl散度 kl散度带变分&#xff1a; 第一个问题 &#xff1a;积分变期望 问题二&#xff1a;贝叶斯公式 第三个问题&#xff1a;为啥可以独立出来 因为相比…