Ant:根据目标调用深度缩进回显输出
对于较大的ant构建结构和相当复杂的项目,我希望根据目标调用深度缩进信息输出(echo),如: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
[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,我想做类似的事情。您是否找到任何工具/设置可以帮助我们?我也欢迎此功能。实际上,如果没有这样的东西,就无法进行认真的调试。现在,我认为这可能是有用的。