【问题标题】:Deactivating message displayed by antant 显示的停用消息
【发布时间】:2013-11-08 15:57:03
【问题描述】:

我正在尝试使用 ant 测试数据库的存在性。

<sql driver="mydriver" url="myurl" userid="myuserid" passworkd="mypassword"
faiOnConnectionError="false"
onerror="continue"
warningproperty="db.empty"
errorproperty="db.empty"
src="mySrc"
print="false"
output="db.present"
showWarnings="false" />

当数据库不存在时,我在控制台提示数据库不存在(这是正常的)。

我需要停用此消息的显示,有没有办法可以做到这一点?

【问题讨论】:

  • 看起来&lt;sql&gt; 将输出写入名为db.present 的文件。您可以将&lt;loadfile&gt; 任务与使用&lt;linecontains&gt;negate 属性的&lt;filterchain&gt; 一起使用。
  • 我没有得到你的答案,文件 db.present 与我的问题没有任何关系。我要停用(不显示)的消息显示在控制台(不在文件中)
  • 要控制控制台输出,您可以为消息记录事件创建一个Listener

标签: sql ant


【解决方案1】:

来自 org.apache.tools.ant.taskdefs.JDBCTask (ant 1.9.2) 的来源,第 379-387 行:

} catch (SQLException e) {
    // failed to connect
    if (!failOnConnectionError) {
        log("Failed to connect: " + e.getMessage(), Project.MSG_WARN);
        return null;
    } else {
        throw new BuildException(e, getLocation());
    }
}

假设您使用默认的 Loglevel Info,所有带有 messagelevel error、warn 和 info 的消息都会被记录下来。要使用 messagelevel warn 消除该输出,请修补 JDBCTask 并将第 382 行的 messagelevel 调整为 Project.MSG_VERBOSEProject.MSG_DEBUG 或使用答案中的解决方案之一
Make ant quiet without the -q flag?

【讨论】:

  • 这个解决方案似乎没问题: 但我的需要不是隐藏所有类型的错误消息(由上面的脚本完成),我只需要隐藏一条关于数据库不存在的消息。*有什么办法可以做到这一点?
  • 使用 .. 你的 sql 任务放在这里 .. 只隐藏来自 sql 任务的消息。有关 setloglevel 任务,请参阅 stackoverflow.com/a/5464009/130683
  • 似乎不可能只捕获 ant 产生的一个错误。有一些解决方案可以捕获所有这些,但这不是一个好的解决方案。感谢您的帮助:)
  • 有一种方法是通过 Flaka ant 插件 (code.google.com/p/flaka)。他的 try-catch 任务能够处理特定的异常类!请参阅 Flaka 手册第 9.1 节,尤其是 9.1.3 => workbench.haefelinger.it/flaka/download/manual/flaka-1.2.2.html
猜你喜欢
  • 2021-04-23
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
  • 2017-08-02
相关资源
最近更新 更多