属性应用程序在ANT Build.xml中循环定义

属性应用程序在ANT Build.xml中循环定义,ant,build.xml,Ant,Build.xml,我正在运行一个build.xml,它引用名为ant.properties的属性文件,我在build.xml中声明了相同的属性文件,但是当我在Linux机器上运行build.xml时,它给出了以下错误 build.xml:15:Property应用程序是循环定义的 它可以与现有的windows VDI一起工作,但现在我们正在迁移到新的Linux服务器,因此尝试使用相同的现有构建和属性文件 property file=“ant.properties”是我在build.xml中使用的内容 我不确定它为

我正在运行一个build.xml,它引用名为ant.properties的属性文件,我在build.xml中声明了相同的属性文件,但是当我在Linux机器上运行build.xml时,它给出了以下错误 build.xml:15:Property应用程序是循环定义的

它可以与现有的windows VDI一起工作,但现在我们正在迁移到新的Linux服务器,因此尝试使用相同的现有构建和属性文件

property file=“ant.properties”是我在build.xml中使用的内容


我不确定它为什么会说循环定义,因为我确定没有任何东西正在运行gin循环,并且我的属性文件没有引用回my build.xml以创建循环。

这发生在我们身上,因为我们引用了一个未添加到属性文件中的属性。结果,ant试图从声明的同一个属性中提取属性

错误声明:

<entry key="my.prop.name" value="${my.prop.name}"/>

要修复它,我们只需添加一个检查,看看是否设置了属性,因为它是可选的

<if>
    <isset property="my.prop.name" />
    <then>
        <propertyfile file="path/to/config.properties">
            <entry key="my.prop.name" value="${my.prop.name}"/>
        </propertyfile>
    </then>
</if>


这修复了我们的循环依赖性问题,并允许属性在项目中是可选的。

这是因为属性文件中定义了类似
property.name=${property.name}
的内容。请发布属性文件的内容,以便对问题进行调试。谢谢Austin,你说得对。我不知不觉地将一个属性定义为env=${env}。删除该错误后,错误就消失了。谢谢你的快速反应,很高兴能帮上忙。