【问题标题】:How come there is no Apache Ant xml schema definition or DTD for build scripts?为什么没有用于构建脚本的 Apache Ant xml 模式定义或 DTD?
【发布时间】:2011-05-23 23:30:44
【问题描述】:

谁能给我解释一下这是为什么?我一直在使用 Maven,并且没有为 Ant 构建脚本定义 xml 让我通过互联网和文档进行搜索,而不是查看 xsd 或 DTD。

例如,几乎不可能找出目标定义是否可以声明自己的属性。

【问题讨论】:

  • 为什么 - 只是因为 ant 的作者不想要它。您应该深入研究文档以找到您想要的内容。

标签: ant


【解决方案1】:

有一个FAQ for this

是否有可用于验证构建文件的 DTD?

<antstructure> 任务可以创建一个不完整的 DTD - 但是这个有一些问题:

  • 它不知道必需的属性。只有手动调整此文件才有帮助。
  • 它不完整 - 如果您通过<taskdef> 添加新任务,它不会知道它。请参阅 Michel Casabianca 的 this page 以获得解决此问题的方法。请注意,您可以在此页面下载的 DTD 基于 Apache Ant 0.3.1。
  • 它甚至可能是无效的 DTD。由于 Ant 允许任务编写者定义任意元素,名称冲突会经常发生 - 如果您的 Ant 版本包含可选的 <test><junit> 任务,则有两个名为 test 的 XML 元素(任务和嵌套的子元素<junit>) 具有不同的属性列表。这个问题无法解决; DTD 没有提供足够丰富的语法来支持这一点。

【讨论】:

  • 我注意到了,但这绝对是无用的答案,并且其中的链接不存在。如果DTD无法处理。 XSD 是肯定的。
  • 我不认为那里的答案是无用的。它很好地解释了为什么你不能真正验证 Ant 脚本
【解决方案2】:

我在某处读到不可能为 ANT 创建架构,因为 ANT 不是 足够规则的语法。您可以测试它是否符合 vanilla XML 语法 如果您使用 Stylus Studio。

您也可以将一些工作脚本输入 Stylus Studio 并要求它生成 XSD。然后手动打磨 XSD。这不是完整的 ANT,但它可能有助于捕获错误。

我处理问题的方法不是直接编写 ANT XML,而是使用 stomper 程序生成它。这样,一旦我得到正确的程序,就可以保证它是正确的。 然后它在所有项目中都是完全一致的。

https://wush.net/websvn/mindprod/filedetails.php?repname=mindprod&path=%2Fcom%2Fmindprod%2Fzzz%2FMkAnt.java

为我自己的践踏代码。

【讨论】:

    【解决方案3】:

    你也可以使用ant目标:

      <target name="dtdgen">
        <antstructure output="ant.dtd"/>
      </target>
    

    直接为您的 build.xml 生成“ant.dtd”文件。只需将目标添加到您的脚本并执行“ant dtdgen”即可。

    (*克里斯*)

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 2014-10-02
      • 2017-02-11
      • 2012-04-30
      相关资源
      最近更新 更多