【问题标题】:Ant target dependency tree viewerAnt 目标依赖树查看器
【发布时间】:2011-11-30 02:43:02
【问题描述】:

是否有一个软件(或 Eclipse 插件),

给定一个目标,是否允许我将目标依赖关系视为一棵树?

树不需要是图形的,可以是基于文本的 - 只是一个可以帮助我遍历某人的 ant 文件网格以调试它们的工具。

不需要是 Eclipse 插件。但是,当单击节点时会将该目标的源代码扔到编辑器上会很好。

【问题讨论】:

    标签: java eclipse ant eclipse-plugin


    【解决方案1】:

    我也想要同样的东西,但和 David 一样,我最终只写了一点代码(Python):

    from xml.etree import ElementTree
    
    build_file_path = r'/path/to/build.xml'
    root = ElementTree.parse(build_file_path)
    
    # target name to list of names of dependencies
    target_deps = {}
    
    for t in root.iter('target'):
      if 'depends' in t.attrib:
        deps = [d.strip() for d in t.attrib['depends'].split(',')]
      else:
        deps = []
      name = t.attrib['name']
      target_deps[name] = deps
    
    def print_target(target, depth=0):
      indent = '  ' * depth
      print indent + target
      for dep in target_deps[target]:
        print_target(dep, depth+1)
    
    for t in target_deps:
      print
      print_target(t)
    

    【讨论】:

    • 我的 build.xml 包含另一个,所以我添加了一个检查:if target in target_deps: to print_target
    【解决方案2】:

    类似于问题ant debugging in Eclipse

    基于Apache's ANT manual,您可以从-projecthelp 选项开始。之后可能会更困难,因为各种目标可能具有交叉依赖关系,因此根本不可能将层次结构表示为树。

    您可以修改 build.xml 以检测环境变量,例如NO_PRINT 在每个项目目标中测试,如果找到,只打印项目名称,不打印其他内容。该项目的依赖关系将保留,并允许 ANT 遍历树并生成将被触及的不同目标的打印输出。

    【讨论】:

    • 公平地说,循环依赖的处理方式与 perl 的数据转储器处理循环引用的方式相同,只是使用指向第一个命名事件的指针。这实际上应该是一项简单的任务,并且内置在 ant 中。
    猜你喜欢
    • 2016-06-08
    • 2013-04-13
    • 2011-10-11
    • 2018-10-08
    • 2013-09-20
    • 2017-06-23
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    相关资源
    最近更新 更多