是否有一个ant命令列出所有目标在一个文件中,有依赖?
现在我只是使用一个小小的shell脚本来匹配包含<target
的行,但这不是一个很好的解决方案。有什么内在的命令吗?
最接近的是ant -p
(或ant -p -v
以获得更多信息)。这不会列出目标依赖项,但我不认为这是一个问题:依赖项对最终用户来说并不重要(它们只是告诉目标如何工作)。
重要的是目标是做什么的,这应该是它的描述:
<target name="foo" depends="bar" description="Does the foo operation">
...
</target>
如果你真正想要的是目标依赖关系,那么阅读xml文件是最好的方法。
没有,但是你可以这样做:
<target name="list.targets">
<xslt in="${basedir}{build.file}"
out="tmp"
style="${display.targets.xsl}">
</xslt>
<delete file="tmp"/>
</target>
$ {display.targets 。Xsl}指向以下.xsl文件:
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output method='text'/>
<xsl:template match="/">
<xsl:for-each select="//target">
<xsl:sort data-type="text" select="@name"/>
<xsl:message terminate="no">
Target : <xsl:value-of select="@name"/><xsl:if test="@depends"> depends on : <xsl:value-of select="@depends"/>
</xsl:if>
<xsl:if test="@description">
Description : <xsl:value-of select="@description"/>
</xsl:if>
</xsl:message>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
和$ {basedir}{构建。指向当前的build.xml文件。输出将像这样:
[xslt] Loading stylesheet D:ToolsStackOverFlowtest.xslt
[xslt]
[xslt] Target : build
[xslt]
[xslt] Target : modify.trs
[xslt] Description : Modifies .trs file targets
[xslt]
[xslt] Target : regex depends on : modify.trs
当然取决于你的build.xml
如果你搜索"ant dependency graph",你会发现一些关于如何从构建文件生成.dot文件的建议,该文件可以通过GraphViz渲染成可视图形。