将ant文件集输出到屏幕以进行调试

41

我有这个:

    <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>

我想要打印出"build-path"参考中的所有内容(以便调试某些问题)。

我尝试过:

<echo>${build-path}</echo>

但它只是回显了精确的文本 "${build-path}"

3个回答

64

你可以使用文档中(诚实地说,它在里面某个地方...)toString辅助工具:

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

1
过去这只是个非正式的黑客行为……但在Ant 1.8.1中它已经完全“正式化”并记录下来了。 - Isaac
1
谢谢,我知道有类似的东西,但是查找文档有点痛苦...我差点写了自己的任务。 - kdgregory

28

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

<?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
....

3
请注意,如果不使用 'property' 属性,使用 <pathconvert .. /> 将会打印到 stdout/console,因此您可以使用更紧凑的语法。 - Patrice M.

9

启用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接