多个Ant属性文件

时间:2014-04-07 20:56:47

标签: ant

Ant似乎忽略了我的一个属性文件。

<property file="local.properties" />
<property file="build.properties" />

build.properties包含我的团队想要使用的典型属性。我正在介绍local.properties,其中包含我的特定工作站的覆盖。我们正在为这个项目使用Eclipse(我使用Kepler),但无论我是在Eclipse中构建还是通过命令行构建,构建都会失败,因为它在build.properties中使用了一些值虽然local.properties包含覆盖。

在我的具体情况下,我的Java版本比其他开发人员/环境更新。尽管在local.properties中指定了我的版本,它仍然会尝试将编译器用于build.properties中的版本。

我知道这些值很好,因为如果我将我的本地属性放在build.properties中,一切正常。

1 个答案:

答案 0 :(得分:0)

Eclipse并不关心您的build.xml或您的属性文件。那只有Ant。

尝试使用-d标志运行ant,并捕获STDOUT和STDERR。这将显示是否正在读入local.proeprties以及设置了什么值。它会说是否尝试阅读local.properties,是否找到local.properties,如果是,则说明正在设置哪些属性。

还要记住属性是先到先得设置的。您没有说明build.xml您在local.properties中阅读的位置。可能是在目标中读取此内容,而在目标之外设置其他属性。即使它们稍后出现在build.xml文件中,也会先设置在任何目标之外设置的属性。如果设置了这些内容,并且您在local.properties中读到了local.properties,那么<property/>就不会过度使用它们。我提到这个是因为这是我遇到的一个问题。有人在他们build.xml的末尾放置了一堆$ ant -d 2>&1 | tee ant.out # Allows you to see and capture the results 个任务,并且他们没有意识到这些任务会在任何目标运行之前设置。

再试一次:

Unix和Mac

$ ant -d > ant.out 2>&1       # There's no "tee" command in Windows.

<强>窗

ant.out

{{1}}的输出将长达数千行,但它可以帮助您弄清楚发生了什么。你发布的内容看起来是正确的。