2014-04-07 121 views
0

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一切正常。

+0

你確定它正確解析'local.properties'嗎?嘗試創建一個測試腳本,您只需閱讀'local.properties'並查看它是否實際上能夠讀取它。 – whiskeyspider

+0

類似於正在使用的Java版本可能會受到外部因素(如機器環境變量)的影響。如何做一個簡單的測試,並在local.properties中添加「debug = local」,在build.properties中添加「debug = build」,然後在腳本中echo $ {debug}? – CAustin

+0

這是正確的閱讀,但我想清楚我失蹤了。儘管主'build.xml'包含'local.properties',它在子目錄中構建了其他'build.xml'文件。我認爲主'build.xml'中的屬性會繼續,但我想不是這種情況。我是否需要將'local.properties'添加到所有後續的構建中。XML文件來實現我想要的,還是有另一種選擇? – ricksmt

回答

0

Eclipse不關心你的build.xml或你的屬性文件。這隻與螞蟻。

嘗試使用-d標誌運行ant,並捕獲STDOUT和STDERR。這將顯示local.proeprties是否正在讀入,並設置了什麼值。它會說它是否試圖讀取local.properties,它是否找到了local.properties,如果是,則設置哪些屬性。

另外請記住,屬性設置先到先服務。你沒有說你在的build.xml中。這可能是在目標中讀取它,而其他屬性設置在目標之外。即使它們稍後出現在build.xml文件中,也會首先設置在任何目標之外設置的屬性。如果這些都設置好了,而你在local.properties中讀到,local.properties不會超過他們。我提到這是因爲這是我遇到的問題。有人在build.xml的末尾放置了一堆<property/>任務,他們沒有意識到這些任務將在任何目標運行之前設置。

同樣,試試這個:

Unix和Mac

$ ant -d 2>&1 | tee ant.out # Allows you to see and capture the results 

的Windows

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

ant.out輸出將是成千上萬排長隊的,但它」我會幫你弄清楚發生了什麼事。你發佈的內容看起來正確。