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
中,一切正常。
答案 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}}的输出将长达数千行,但它可以帮助您弄清楚发生了什么。你发布的内容看起来是正确的。