将 ant 文件集回显到屏幕以进行调试

Posted

技术标签:

【中文标题】将 ant 文件集回显到屏幕以进行调试【英文标题】:Echoing out ant fileset to screen for Debugging 【发布时间】:2011-04-25 11:03:04 【问题描述】:

我有这个:

    <ivy:buildlist reference="build-path">
        <fileset dir="$root.dir">
            <include name="*/build.xml" />
            <include name="controllers/*/build.xml" />
        </fileset>
    </ivy:buildlist>


    <subant buildpathref="build-path">
        <target name="jar.all" />
        <target name="publish-local" />
    </subant>

我想回显“构建路径”参考中的所有内容(用于调试某些内容)。

我试过了:

<echo>$build-path</echo>

但它只是回显了确切的文本“$build-path”

【问题讨论】:

【参考方案1】:

您可以使用documented(老实说,它在某处...)toString helper:

<echo message="My build-path is $toString:build-path" />

【讨论】:

它曾经是一种非正式的黑客攻击......但是它已经完全“正式化”并记录在 Ant 1.8.1 中。 谢谢,我知道有这样的东西,但是搜索文档有点痛苦……快写我自己的任务了。【参考方案2】:

要调试文件集中包含哪些文件,您可以使用此示例,它以可读格式打印文件集的内容:

<?xml version="1.0" encoding="UTF-8"?>
<project name="de.foo.ant" basedir=".">

<!-- Print path manually -->
<target name="print-path-manually" description="" >
    <path id="example.path">
        <fileset dir="$ant.library.dir"/>
    </path>

    <!-- Format path -->
    <pathconvert pathsep="$line.separator|   |-- "             
        property="echo.path.compile"             
        refid="example.path">
    </pathconvert>
    <echo>$echo.path.compile</echo>
</target>

</project>

这个输出是:

Buildfile: D:\Workspaces\IvyTutorial\de.foo.ant\prettyPrintPath.xml
print-path-manually:
 [echo] D:\Programme\eclipse-rcp-helios-SR1-win32\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-antlr.jar
 [echo] |   |-- D:\Programme\eclipse-rcp-helios-SR1-win32\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-apache-bcel.jar
 [echo] |   |-- D:\Programme\eclipse-rcp-helios-SR1-win32\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-apache-bsf.jar
 [echo] |   |-- D:\Programme\eclipse-rcp-helios-SR1-win32\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-apache-log4j.jar
 [echo] |   |-- D:\Programme\eclipse-rcp-helios-SR1-win32\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-apache-oro.jar
 [echo] |   |-- D:\Programme\eclipse-rcp-helios-SR1-win32\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-apache-regexp.jar
 [echo] |   |-- D:\Programme\eclipse-rcp-helios-SR1-win32\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-apache-resolver.jar
....

【讨论】:

请注意,使用不带 'property' 属性的 会输出到 stdout/console,因此您可以使用更紧凑的语法。【参考方案3】:

启用 ant 的调试日志记录:

$ ant -h
ant [options] [target [target2 [target3] ...]]
Options:
...
  -verbose, -v           be extra verbose
  -debug, -d             print debugging information

请注意,尽管这会产生大量输出,因此最好将输出捕获到文件中,然后在文本编辑器中查找文件集信息:

ant -debug compile > ant-out.txt

【讨论】:

以上是关于将 ant 文件集回显到屏幕以进行调试的主要内容,如果未能解决你的问题,请参考以下文章

如何将文本粘贴到像 awk 这样的逐行文本过滤器中,而没有标准输入回显到屏幕?

PHP pdo 将结果回显到表中

使用 VBScript 将代码回显到文件中

批次 |将多个变量回显到文件

如何阻止批处理文件将额外的行回显到文件中? [复制]

将变量内容回显到文本文件中的批处理脚本[重复]