ant - 没有 -q 标志让 Ant 安静?

我有一个 ant 构建文件,它通常在完全不同的环境中运行。默认情况下,我正在寻找与使用相同的行为:

ant -q

但是,由于某些团队成员的配置不同,因此在每个人的环境中指定 -q 选项并不容易以统一的方式完成(有些人从 eclipse 运行 ant,有些从命令行运行,有些从调试/分析工具运行,等等。每个都有不同的方法来指定 ant 参数,如 -q)

所以我正在寻找一种方法让 ant 文件安静地调用自身...

如下所示是理想的:

<target name="default">
    <antcall quiet="yes" target="build" /> <!-- doesn't work -->
</target>

任何人都可以想办法完成这样的事情吗?我所追求的只是让构建在运行默认目标时安静地运行,无论是否设置了 -q。

最佳答案

一个选项可能是从目标中设置日志记录级别。

您可以通过一个简短的脚本任务来访问记录器。比如:

<target ... >
    <script language="javascript">
        var logger = project.getBuildListeners( ).firstElement( );
        logger.setMessageOutputLevel( 0 );
    </script>
    ...
</target>

我不熟悉 Eclipse 如何调用 Ant,但可能有必要遍历所有构建监听器以全面“静默”。

建议无论您最终如何执行此操作,都可以轻松切换回详细运行。

编辑 - 对评论的回应: 您可以使用 project.getProperty() 从脚本中访问项目属性:

<property name="verboseFlag" value="1" />
<script language="javascript">
    var logger = project.getBuildListeners().firstElement();
    var verboseMode = project.getProperty( "verboseFlag" )
    if ( ! "1".equals( verboseMode ) )
        logger.setMessageOutputLevel( 0 );
</script>

(有点旧)API docs are here ,包括 project class .

https://stackoverflow.com/questions/5462732/

相关文章:

macos - 如何在 Mac OS X 上将 OpenSSL 构建为 32 位 (i386)?

swift - 我可以使用 Swift 包管理器制作本地模块吗?

xcode - 命令 CompileAssetCatalog 失败,退出代码为非零

android - 如何在 MonoDevelop 中编译 MonoDroid App 时修复 "O

android - Gradle:构建Android库后如何运行自定义任务?

.net - 是否有显示所有属性名称/值的 NAnt 任务?

build - 为什么没有人为脑死亡者创建开源构建系统?

hibernate - 未能执行目标和 hibernate 无效 LOC header (错误签名)

c++ - 如何用Xcode修改并行编译的数量

linux - RPM - 安装时间参数