Ant 目标依赖树查看器

问题描述 投票:0回答:3

有没有一款软件(或者eclipse插件),

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

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

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

java eclipse ant eclipse-plugin
3个回答
5
投票

我想要同样的东西,但是,像大卫一样,我最终只写了一些代码(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)

4
投票

类似于问题在Eclipse中调试

根据Apache的ANT手册,您可以从

-projecthelp
选项开始。之后可能会更困难,因为各个目标可能具有交叉依赖性,因此根本不可能将层次结构表示为树。

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


0
投票

我创建了一个java命令行工具,可以分析ant构建脚本和目标之间的依赖关系。 我正在分析一个调用其他构建脚本的 ant 脚本,它们总共有超过 1000 个 ant 目标。工具是摆脱困境的唯一方法。 https://github.com/kunterbunt2/antanalyzer 也许这就是您正在寻找的东西。 如果自述文件不够好,请随时提出问题。 还有一些单元测试来展示该工具。

© www.soinside.com 2019 - 2024. All rights reserved.