2016-11-10 64 views
0

我在Gradle中遇到了這個非常奇怪的行爲,我無法找到出路。在我gradle.properties文件,我使用這個檢查條件:如果其他在Gradle腳本中

//gradle.properties 

if ("${System.Property['DATABASE_DIR']}".compareTo('swdb') == 0) { 
    PROJECT_DATABASE_PATH=../database/swdb/include 
    } 
else { 
    PROJECT_DATABASE_PATH=../database/include/ 
} 

我創建了一個名爲printProperties新的任務,它看起來像這樣。

//build.gradle 
task printProperties { 
    println "${System.properties['DATABASE_DIR']}".compareTo('swdb') == 0 
    println PROJECT_DATABASE_PATH 
} 

我得到下面的輸出,當我運行printProperties任務。

$ gradle這個printProperties -DDATABASE_DIR = SWDB

真正

../database/include/

:printProperties UP-TO-DATE

生成成功

總時間:1.07秒

真的很奇怪,任務打印爲真,但gradle.properties文件不能正確評估相同的條件。有人能幫助我嗎?

+1

你確定你可以在'gradle.properties'使用的代碼?我認爲這真的只是一個普通的舊屬性文件。 – Henry

+0

我真的不確定。它沒有清楚地記錄,如果我可以在那裏使用一些代碼。如果我不應該在那裏使用代碼,那麼我會創建一個新的問題來解決我的困難。我需要能夠選擇編譯代碼所需的頭文件的位置,具體取決於本地Gradle模型的命令行定義的系統屬性。 –

+2

'gradle.properties'是一個帶'key = value'對的屬性文件。你不能把常規代碼放在那裏 –

回答