【发布时间】:2011-05-23 23:30:44
【问题描述】:
谁能给我解释一下这是为什么?我一直在使用 Maven,并且没有为 Ant 构建脚本定义 xml 让我通过互联网和文档进行搜索,而不是查看 xsd 或 DTD。
例如,几乎不可能找出目标定义是否可以声明自己的属性。
【问题讨论】:
-
为什么 - 只是因为 ant 的作者不想要它。您应该深入研究文档以找到您想要的内容。
标签: ant
谁能给我解释一下这是为什么?我一直在使用 Maven,并且没有为 Ant 构建脚本定义 xml 让我通过互联网和文档进行搜索,而不是查看 xsd 或 DTD。
例如,几乎不可能找出目标定义是否可以声明自己的属性。
【问题讨论】:
标签: ant
有一个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 没有提供足够丰富的语法来支持这一点。
【讨论】:
我在某处读到不可能为 ANT 创建架构,因为 ANT 不是 足够规则的语法。您可以测试它是否符合 vanilla XML 语法 如果您使用 Stylus Studio。
您也可以将一些工作脚本输入 Stylus Studio 并要求它生成 XSD。然后手动打磨 XSD。这不是完整的 ANT,但它可能有助于捕获错误。
我处理问题的方法不是直接编写 ANT XML,而是使用 stomper 程序生成它。这样,一旦我得到正确的程序,就可以保证它是正确的。 然后它在所有项目中都是完全一致的。
为我自己的践踏代码。
【讨论】:
你也可以使用ant目标:
<target name="dtdgen">
<antstructure output="ant.dtd"/>
</target>
直接为您的 build.xml 生成“ant.dtd”文件。只需将目标添加到您的脚本并执行“ant dtdgen”即可。
(*克里斯*)
【讨论】: