任务将 XML 配置按树路径转为 Ant 属性,如 MyApp 生成 project-config.app.name;支持 keepRoot、prefix、collapseAttributes 等控制命名,semanticAttributes="true" 可识别 location/refid 等语义属性并自动解析路径与引用。

Ant 的 任务用于从 XML 文件中读取结构化配置,并将其自动转为 Ant 属性,方便在 build.xml 中通过 ${xxx} 引用。它不是简单地“解析文本”,而是按 XML 树路径生成层级属性名,比如 会生成属性 root.db.url。
基本用法:加载 XML 并映射为属性
假设你有配置文件 config.xml:
MyApp 2.1 dist
在 build.xml 中添加:
之后即可使用:
-
${project-config.app.name}→MyApp -
${project-config.build.output-dir}→dist
注意:keepRoot="true"(默认)会让根元素名 project-config 成为属性前缀;设为 false 则直接以 app.name 形式访问。
控制属性命名与路径结构
可通过以下属性调整生成逻辑:
-
prefix="cfg":统一加前缀,如cfg.app.name -
collapseAttributes="true":把 XML 属性(如)也转为属性,生成file.id=main、file.path=src/Main.java -
delimiter=";":当某节点含多个子节点(如),启用后可合并为a.jar b.jar libs.lib=a.jar;b.jar
启用语义处理(解析引用与特殊属性)
设 semanticAttributes="true" 后,、、、 等标签会被特殊识别:
效果等价于:
-
(自动转为绝对路径)
此时还可嵌套使用 ${xxx} 引用,例如 会被自动展开(需确保引用顺序合理)。
常见注意事项
使用时需留意几点:
- XML 必须格式良好(well-formed),不校验 DTD 或 Schema;如需验证,设
validate="true" - 属性一旦定义即不可覆盖 ——
加载的属性优先级高于后续,但低于命令行-Dkey=value - 路径类属性(如
location)默认基于${basedir}解析,也可用rootDirectory指定基准目录 - 避免属性名含特殊字符(如点号过多、破折号),建议 XML 中用下划线或驼峰,如
比更稳妥










