2016-11-10 63 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'对的属性文件。你不能把常规代码放在那里 –

回答