Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant:根据目标调用深度缩进回显输出_Ant_Echo_Callstack_Auto Indent - Fatal编程技术网

Ant:根据目标调用深度缩进回显输出

Ant:根据目标调用深度缩进回显输出,ant,echo,callstack,auto-indent,Ant,Echo,Callstack,Auto Indent,对于较大的ant构建结构和相当复杂的项目,我希望根据目标调用深度缩进信息输出(echo),如: [echo] running build from project/build.xml [echo] running build from project/sub1/build.xml [echo] running build from project/sub2/build.xml [echo] running build from project/sub2/sub21

对于较大的ant构建结构和相当复杂的项目,我希望根据目标调用深度缩进信息输出(echo),如:

[echo] running build from project/build.xml
    [echo] running build from project/sub1/build.xml
    [echo] running build from project/sub2/build.xml
        [echo] running build from project/sub2/sub21/build.xml
        [echo] running build from project/sub2/sub22/build.xml
    [echo] running build from project/sub3/build.xml

BUILD SUCCESSFUL
Total time: x seconds
有没有这样的调整,日志属性或其他什么? …可能是xslt/css或事件侦听器

缩进不是重点,而是查看调用层次结构:避免搜索build.xml文件或在所有目标和宏定义中添加自己的echo函数。

请参阅

XmlLogger在这方面似乎很有用,如果有点过于冗长的话-您可以通过编写一点脚本来提取调用层次结构(也可以使用echos):

ant-logger org.apache.tools.ant.XmlLogger构建

在Log4j方面也取得了一些成功:

ant-listener org.apache.tools.ant.listener.Log4jListener-lib..../logging-log4j-1.2.17/dist/lib/-lib。建造

为此,我在当前目录中放置了一个log4j.properties文件,使用上面第一个链接中的示例内容。 这将生成包含以下内容的build.log:

[     0]  Project : Build started.
[   908]  Taskdef : Could not load definitions from resource checkstyletask.properties. It could not be found.
[   995]   Target : Target "build" started.
[  4312]     Echo : com.ohmy: ivy.sorted.modules=thirdparty-plugins#com.sun.jaxb
[  4529]  Taskdef : Could not load definitions from resource checkstyletask.properties. It could not be found.
[  4588]   Target : Target "build_empty_unittests_jar_to_fulfill_dependencies" started.
[  4590]   Target : Target "build_empty_unittests_jar_to_fulfill_dependencies" finished.
[  4591]   Target : Target "build_nodeps" started.
[  4591]     Echo : Calling target 'build' for module com.sun.jaxb
[  4770]  Taskdef : Could not load definitions from resource checkstyletask.properties. It could not be found.
[  4846]   Target : Target "check_module_targets_file_exists" started.
[  4847]   Target : Target "check_module_targets_file_exists" finished.
[  4847]   Target : Target "check_module_target_exists" started.
[  4847]   Target : Target "check_module_target_exists" finished.
现在,我只是将其导入小ruby one liner hack以缩进它:

ruby -pe 'BEGIN {$i=0};$i-=1 if /finished\.$/;print " " * $i;$i+=1 if /started\.$/' build.log  
产生

[     0]  Project : Build started.
 [   908]  Taskdef : Could not load definitions from resource checkstyletask.properties. It could not be found.
 [   995]   Target : Target "build" started.
  [  4312]     Echo : com.ohmy: ivy.sorted.modules=thirdparty-plugins#com.sun.jaxb, com.ohmy
  [  4529]  Taskdef : Could not load definitions from resource checkstyletask.properties. It could not be found.
  [  4588]   Target : Target "build_empty_unittests_jar_to_fulfill_dependencies" started.
  [  4590]   Target : Target "build_empty_unittests_jar_to_fulfill_dependencies" finished.
  [  4591]   Target : Target "build_nodeps" started.
   [  4591]     Echo : Calling target 'build' for module com.sun.jaxb
   [  4770]  Taskdef : Could not load definitions from resource checkstyletask.properties. It could not be found.
   [  4846]   Target : Target "check_module_targets_file_exists" started.
   [  4847]   Target : Target "check_module_targets_file_exists" finished.
   [  4847]   Target : Target "check_module_target_exists" started.
   [  4847]   Target : Target "check_module_target_exists" finished.
   [  4847]   Target : Target "module_target" started.
   [  4847]   Target : Target "module_target" finished.
   [  4847]   Target : Target "default_target" started.
    [  4849]   Target : Target "init" started.
     [  4850]   Target : Target "check_module_ivy_file_uptodate" started.
     [  4858]   Target : Target "check_module_ivy_file_uptodate" finished.
     [  4858]   Target : Target "create_module_ivy_file" started.
     [  4858]   Target : Target "create_module_ivy_file" finished.
     [  4859]   Target : Target "check_build_file_uptodate" started.
     [  4862]   Target : Target "check_build_file_uptodate" finished.
     [  4864]   Target : Target "generate_module_build_file" started.
     [  4864]   Target : Target "generate_module_build_file" finished.
     [  4865]   Target : Target "update_module_build_file" started.
      [  4866]   Target : Target "check_module_name" started.
      [  4868]   Target : Target "check_module_name" finished.
      [  4869]   Target : Target "check_manifest_version" started.
       [  4869]     Echo : Calling target 'check_manifest' for module com.sun.jaxb
       [  5041]  Taskdef : Could not load definitions from resource checkstyletask.properties. It could not be found.
       [  5065]   Target : Target "check_module_targets_file_exists" started.
       [  5065]   Target : Target "check_module_targets_file_exists" finished.
       [  5065]   Target : Target "check_module_target_exists" started.
       [  5065]   Target : Target "check_module_target_exists" finished.
       [  5065]   Target : Target "module_target" started.
       [  5065]   Target : Target "module_target" finished.
       [  5066]   Target : Target "default_target" started.
        [  5066]   Target : Target "default_check_manifest" started.
        [  5067]   Target : Target "default_check_manifest" finished.
       [  5067]   Target : Target "default_target" finished.
       [  5067]   Target : Target "module_specific_target" started.
       [  5067]   Target : Target "module_specific_target" finished.
      [  5068]   Target : Target "check_manifest_version" finished.
     [  5068]   Target : Target "update_module_build_file" finished.
     [  5069]   Target : Target "ivy_retrieve" started.
      [  5069]     Echo : Skipping 'ivy_retrieve' as everything is uptodate for com.sun.jaxb
....

当然这可以改进,但现在对我来说已经足够了:)

Ant决定。。。。您可能需要检查ant的源代码…我希望避免理解ant的解析并更改代码,但是使用标准机制。thoku,我想做类似的事情。您是否找到任何工具/设置可以帮助我们?我也欢迎此功能。实际上,如果没有这样的东西,就无法进行认真的调试。现在,我认为这可能是有用的。