如何在处理注释时写入 Gradle 日志记录?

2023-12-26

我有一个javax.annotation.processing.Processor我用来生成源文件。这一切都工作正常,但我想在构建过程中将一些调试消息写入控制台。我可以使用注释Messeger类,但这不允许我利用 Gradle 日志记录。我想要的是通过 Gradle 日志选项控制输出,所以gradle -d ...写入调试消息,gradle -i ...信息消息等

有什么方法可以从我的 Java bean 处理类中获取 Gradle 记录器吗?

我读过Gradle 日志记录 doco http://gradle.org/docs/current/userguide/logging.html,并尝试使用 SLF4J 日志记录,但这只是将我的消息写入 stdout,它被拾取为QUIET通过摇篮:

private static final Logger log = LoggerFactory.getLogger("org.gradle.example");

messeger.printMessage(Diagnostic.Kind.NOTE, "BeanProcessor: processing " + classElem);
log.debug("===debug=== BeanProcessor: processClass {}", classElem);
log.error("===error=== BeanProcessor: processClass {}", classElem);

21:28:22.211 [QUIET] [system.out] 21:28:22.208 [main] DEBUG com.example.beans.BeanProcessor - ===debug=== BeanProcessor: processClass com.example.beans.MyBean
21:28:22.212 [QUIET] [system.out] 21:28:22.212 [main] ERROR com.example.beans.BeanProcessor - ===error=== BeanProcessor: processClass com.example.beans.MyBean
21:28:22.216 [ERROR] [system.err] Note: BeanProcessor: processing com.example.beans.MyBean

另外,我得到的记录器是ch.qos.logback.classic.Logger- Gradle doco 提到:“Logger ...扩展了 SLF4J Logger 接口并添加了一些 Gradle 特定方法”,所以我希望看到一些 Gradle 特定的日志记录类。

Gradle 配置如下Gradle 中的注释处理器将源文件输出到构建/类,从而导致 javadoc 失败。如何修复它? https://stackoverflow.com/questions/25239243/annotation-processor-in-gradle-outputs-source-files-to-build-classes-making-java#answer-25242121

Thanks,


一个可能有帮助的黑客:

您可以创建一个新的自定义 gradle 任务,所有编译任务都依赖该任务,并根据 -i、-d 等是否传递给 gradle (可能读取记录.captureStandardOutput https://docs.gradle.org/current/userguide/logging.html会成功的)。

然后在注释处理器启动时读取该环境变量,并使用它有条件地写入标准输出。

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

如何在处理注释时写入 Gradle 日志记录? 的相关文章

随机推荐

  • 使用 json_annotation 包可序列化 Flutter JSON 如何将 JsonConverter 与 Firebase Firestore DocumentReference 结合使用

    我正在尝试使用 JSON 可序列化和自定义 JsonConverter 在模型中保存 DocumentReference 但没有正确执行 这是我的模型 DocumentSerializer DocumentReference recentT
  • 通过调用带参数的URL获取json对象

    这看起来是一个简单的问题 但我有一个编码员的心理障碍 这个概念 我输入一个 URL 即 www mysite com getStuff name Jerry ocupation Engineer Id 12345 我不想返回网页或其他内容
  • 在 C++ 代码中初始化 C 结构

    有没有更好的方法在 C 代码中初始化 C 结构 我可以在变量声明点使用初始化列表 但是 如果所有参数在编译时未知 或者如果我没有声明本地 全局实例 则这没有那么有用 例如 声明该结构的遗留 C 代码 并且还有使用它的 API typedef
  • 数据库设计 - 空字段[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前正在与我的开发团队讨论一个问题 他们认为空旷的田地是个坏消息 例如 如果我们有一个客户详细信息表 用于存储来自不同国家 地区的客户数据 并
  • Datastax:重新准备已准备好的查询警告

    我有这个代码 UUID notUuid UUIDs timeBased PreparedStatement pstmt cqlSession prepare INSERT INTO mytable userId notifId notifi
  • 如何使用GSON将json文件解析为java POJO类

    我正在使用 GSON 解析 JSON 文件 并且想将此 JSON 对象映射到 POJO 类 问题是 JSON 中的属性名称没有驼峰式大小写 但我的 java POJO 对象具有驼峰式大小写属性名称 有没有什么想法不会影响性能 例如 JSON
  • 更新 GAC dll

    我在 GAC 中注册了一个 DLL 其中有一个错误 v4 2 0 因此 我修复了该错误 仅更新了文件版本 v4 2 1 保留程序集版本 v4 2 0 并构建了一个新的 MSI 包 问题是 DLL 没有安装在 GAC 中 我通过右键单击 DL
  • 使结构体变得易失性是否会使其所有成员都易失性?

    如果我有 struct whatever int data volatile whatever test will test data也会波动吗 可以提出另一个问题 或者只是用另一种方式来看待原始问题 是否制作一个结构体const使其所有成
  • 为当前的下一行数据编写脚本

    如果我想复制下一行的数据该怎么办 例如 客户 A 于 2015 年 1 月 1 日开始当前行程 下一次行程于 2015 年 1 月 15 日开始 因此 他当前行程的结束日期将为 2015 年 1 月 14 日 即下一次行程开始的前一天 我可
  • Spring REST 错误处理:无法获取我的自定义消息

    我读了几篇关于服务器端错误处理的文章 教程 我只想用我的自定义消息返回一个 http 错误代码 当然这是行不通的 我在 javascript 回调中始终得到的结果是以下消息
  • Visual Studio 2005 Designer 未将控件添加到 aspx.Designer.cs

    我不是 Designer 的粉丝 我更喜欢直接在 ASPX 页面上编码 然而 自从重新格式化 并导致重新格式化 以来 designer cs手动编码到 aspx 文件时 文件未正确更新 这意味着我的代码隐藏 http en wikipedi
  • 让Python忽略.pyc文件

    有没有办法让 Python 忽略任何存在的 pyc 文件并始终直接解释所有代码 包括导入的模块 谷歌还没有找到任何答案 所以我怀疑没有 但为了以防万一 似乎值得一问 为什么我要这样做 我有一个大型 Python 脚本管道 这些脚本在数百台计
  • 编译 C 程序时体系结构 x86_64 的未定义符号[重复]

    这个问题在这里已经有答案了 我有一个简单的程序演示 use c include libhello h int main void hello return 0 libhello h void hello void libhello c in
  • Java 中的 PrintWriter 或任何其他输出流不知道“\r\n”

    我在使用 PrintWriter 或任何其他输出流在服务器和客户端程序之间发送消息时遇到问题 如果我使用 println abc 进行通信 它可以正常工作 但是如果我使用 print abc r n print abc n 或 print
  • Objective-C 中的自动释放池 - 释放主 AutoreleasePool?

    根据我的理解 当一个对象被发送时autorelease消息 如果除中的自动释放池之外不存在自动释放池main m 该对象被放置在main m 假设这是正确的 我有几个问题 1 所有自动释放的对象是否都会保留在该池中直到应用程序终止 2 如果
  • NSAttributedString 文本始终以较大的 lineHeight 粘在底部

    我正在尝试实现来自 Sketch 的按设计标签 例如我需要字体大小 19 和行高 50 的文本样式 所以我最终使用NSAttributedString with NSMutableParagraphStyle但因文本粘在底部的问题而停止UI
  • \r 和 \n 有什么区别?

    How are r and n不同的 我认为这与 Unix Windows 和 Mac 有关 但我不确定它们究竟有何不同 以及在正则表达式中搜索 匹配哪些内容 他们是不同的角色 r是回车符 并且 n是换行 在 旧 打印机上 r将打印头送回行
  • 将 anticaptcha 与 selenium 集成

    我正在使用 Selenium Python 尝试填写表格 然后填写验证码 我找到了 python anticaptcha 并购买了 10 美元的积分 一切正常 验证码出现了 但什么也没发生 我花了几个小时试图寻找答案 查阅他们的 api 和
  • Android TabLayout 在启动时选择第一个选项卡

    我正在使用 Android 设计库中的 TabLayout 我有多个选项卡 每个选项卡在被选择时都有一个操作 所以我有一个属性 startSelection 它执行 tabLayout getTabAt startSelection sel
  • 如何在处理注释时写入 Gradle 日志记录?

    我有一个javax annotation processing Processor我用来生成源文件 这一切都工作正常 但我想在构建过程中将一些调试消息写入控制台 我可以使用注释Messeger类 但这不允许我利用 Gradle 日志记录 我