Apache Ant v1.8.1:解析包含对公共属性的引用的加载属性时出错

时间:2010-10-30 05:47:42

标签: java ant properties

这在Ant 1.7.1中有效,但在Ant 1.8.1中不再有效。这是一个错误还是有新的和/或更好的方法来实现我想要做的事情?

项目由2个组件组成,每个组件都有自己的构建文件和属性文件,还有一个顶级构建文件和属性文件,用于常见的目标和属性。它的布局如下:

  • /项目/
    • 组件的一个/
      • build.properties
      • 的build.xml
    • 组件-B /
      • build.properties
      • 的build.xml
    • build.properties
    • 的build.xml

/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?

1 个答案:

答案 0 :(得分:0)

对于遇到这个问题的其他人,我发现它确实是一个错误;虽然我没有找到相关的错误报告,但我使用其存储库中的最新源代码构建了ant,该属性现在可以正确解析。这是希望v1.8.2尽快发布。