这在Ant 1.7.1中有效,但在Ant 1.8.1中不再有效。这是一个错误还是有新的和/或更好的方法来实现我想要做的事情?
项目由2个组件组成,每个组件都有自己的构建文件和属性文件,还有一个顶级构建文件和属性文件,用于常见的目标和属性。它的布局如下:
/project/build.properties:
common.root.dir=/project
/project/build.xml:
<project name="common">
<dirname file="${ant.file.common}" property="common.base.dir"/>
<loadproperties srcfile="${common.base.dir}/build.properties"/>
</project>
/project/component-b/build.properties:
dist.dir=${common.root.dir}/component-b/dist
/project/component-b/build.xml:
<project name="component-b">
<dirname property="component.b.base.dir" file="${ant.file.component-b}"/>
<import file="${component.b.base.dir}/../build.xml"/>
<loadproperties srcfile="${component.b.base.dir}/build.properties"/>
</project>
/project/component-a/build.properties:
dist.dir=${common.root.dir}/component-a/dist
/project/component-a/build.xml:
<project name="component-a">
<dirname property="component.a.base.dir" file="${ant.file.component-a}"/>
<property name="project.root.dir" location="${component.a.base.dir}/.."/>
<import file="${project.root.dir}/build.xml"/>
<loadproperties srcfile="${component.a.base.dir}/build.properties"/>
<loadproperties srcfile="${project.root.dir}/component-b/build.properties" prefix="component.b"/>
<target name="print.unresolved.property">
<echo>${component.b.dist.dir}</echo>
</target>
</project>
要查看错误运行: ant -f /project/component-a/build.xml print.unresolved.property
如果使用Ant 1.8.1,输出将为:
print.unresolved.property:
[echo] ${common.root.dir}/component-b/dist
为什么common.root.dir没有解析为/ project?
答案 0 :(得分:0)
对于遇到这个问题的其他人,我发现它确实是一个错误;虽然我没有找到相关的错误报告,但我使用其存储库中的最新源代码构建了ant,该属性现在可以正确解析。这是希望v1.8.2尽快发布。