为什么没有用于构建脚本的Apache Ant xml架构定义或DTD?

时间:2010-12-11 15:41:55

标签: ant

可以请任何人向我解释为什么会这样?我一直在使用Maven,并且缺少xml定义的Ant构建脚本使我能够通过互联网和文档进行搜索而不是查看xsd或DTD。

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

3 个答案:

答案 0 :(得分:17)

有一个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没有足够的语法来支持这一点。
  •   

答案 1 :(得分:8)

您也可以使用蚂蚁目标:

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

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

(*克里斯*)

答案 2 :(得分:3)

我在某处读到,无法为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

为我自己的stomper代码。