如何识别 ant xml 文件中未使用的任务

How to identify unused tasks in ant xml files

我得到了 20 个 xml 文件,当调用 build.xml 时它们是 运行...。我被要求清除这些文件中的垃圾。如何识别那些 xml 文件中未使用的任务?

对此可能没有简单、万无一失的解决方案(您真的只需要询问公司中的每个人他们在使用什么),但是我喜欢在复杂的 Ant 脚本中使用的一个非常有用的工具是"Grand" 绘图工具。 https://ant-grand.github.io/Grand/grand.html

下载库并将其放在 lib 目录中,然后像这样创建一个新的 Ant 脚本:

<?xml version="1.0"?>
<project default="graph">
  <typedef classpath="lib/grand.jar" resource="net/ggtools/grand/antlib.xml" />

  <target name="graph">
    <grand buildfile="${script.file}" output="${script.file}.dot">
      <filter name="prefixed" />
    </grand>

    <exec executable="dot">
      <arg line="-Grankdir=TB -Tpng ${script.file}.dot -o ${script.file}.png"/>
    </exec>
  </target>
</project>

现在您可以使用

调用脚本

ant -f graph.xml -Dscript.file=/path/to/ant/script/build.xml

你最终会得到一个 build.xml.png 图像文件,它为你指向的任何脚本显示一个干净的目标依赖关系树。

我添加了一张图像,该图像是从我自己的一个相对复杂的脚本中生成的作为示例。当一个目标有一个指向另一个目标的箭头时,这意味着前者正在使用后者作为依赖项(因此后者不能在不破坏前者的情况下被删除)。任何没有被指向为依赖项的东西都可以在不伤害其他任何东西的情况下被删除,但这并不一定意味着它本身是无用的。