运维开发网

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

运维开发网 https://www.qedev.com 2020-05-10 08:27 出处:网络 作者:运维开发网整理
对于较大的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
对于较大的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函数.

见 https://ant.apache.org/manual/listeners.html

XmlLogger在那里看起来很有用,如果有点过于冗长 – 你可以通过一些脚本来提取调用层次结构(也有echos):

ant -logger org.apache.tools.ant.XmlLogger build

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一个衬垫黑客来缩进它:

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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消