多个Ant属性文件
Ant似乎忽略了我的一个属性文件多个Ant属性文件,ant,Ant,Ant似乎忽略了我的一个属性文件 <property file="local.properties" /> <property file="build.properties" /> build.properties包含我的团队想要使用的典型属性。我正在介绍local.properties,它包含我特定工作站的覆盖。我们在这个项目中使用Eclipse(我使用的是开普勒),但是无论我是在Eclipse中构建还是通过命令行构建,构建都会失败,因为它在build.prope
<property file="local.properties" />
<property file="build.properties" />
build.properties
包含我的团队想要使用的典型属性。我正在介绍local.properties
,它包含我特定工作站的覆盖。我们在这个项目中使用Eclipse(我使用的是开普勒),但是无论我是在Eclipse中构建还是通过命令行构建,构建都会失败,因为它在build.properties
中使用了一些值,即使local.properties
包含覆盖
在我的特定情况下,我的Java版本比其他开发人员/环境更新。尽管在local.properties
中指定了我拥有的版本,它仍然尝试在build.properties
中使用该版本的编译器
我知道这些值很好,因为如果我将本地属性放在
build.properties
中,一切正常。Eclipse不关心您的build.xml
或您的属性文件。这只适用于蚂蚁
尝试使用-d
标志运行ant,并捕获STDOUT和STDERR。这将显示是否正在读取local.proe
,以及设置了哪些值。它将说明它是否正在尝试读取local.properties
,是否找到local.properties
,如果是,将设置哪些属性
还要记住,属性设置为先到先得。您没有说明您在local.properties
中阅读的build.xml
的位置。这可能是在目标中读取,而在目标之外设置其他属性。即使它们稍后出现在build.xml
文件中,也会首先设置在任何目标之外设置的属性。如果设置了这些属性,并且读入了local.properties
,local.properties
不会超过它们。我提到这一点是因为我在这里遇到了一个问题。有人在其build.xml
的末尾放置了一堆
任务,他们没有意识到这些任务将在运行任何目标之前设置
再次尝试以下操作:
Unix和Mac:
$ ant -d 2>&1 | tee ant.out # Allows you to see and capture the results
窗口
$ ant -d > ant.out 2>&1 # There's no "tee" command in Windows.
ant.out的输出将有数千行,但它将帮助您了解发生了什么。您发布的内容看起来正确。您确定它正确解析了
local.properties
?尝试创建一个测试脚本,您只需在其中读取local.properties
,然后查看它是否能够真正读取它。所使用的Java版本可能会受到外部因素的影响,例如您机器的环境变量。做一个简单的测试,在local.properties中添加“debug=local”,在build.properties中添加“debug=build”,然后在脚本中回显${debug}怎么样?它读取正确,但我发现了我缺少的东西。即使主build.xml
包含local.properties
,它也会在子目录中构建其他build.xml
文件。我原以为mainbuild.xml
中的属性会保留下来,但我想情况并非如此。我是否需要将local.properties
添加到所有后续的build.xml
文件以实现我的目标,或者是否有其他选项?这取决于其他文件的使用方式。如果通过
或
任务使用inheritAll=“false”
在目标中调用目标,则必须在每个目标中分别加载本地属性文件。如果其他build.xml
正在导入到主build.xml
中,那么您只需在加载该属性文件后导入它们即可。