我有一个gradle项目,它有一个计算变量,我需要传递给应用程序。 当我尝试这样做时,传递一个空值,而不是我想要的设置值。
我有下面的示例文件,它演示了运行的问题,只需执行 gradle foo 我希望两行输出都是 4。
def String sum
task add {
doLast {
new ByteArrayOutputStream().withStream { os ->
def result = exec {
executable = 'sh'
args = ['-c', 'echo $((2 + 2))']
standardOutput = os
}
sum = os.toString()
afterEvaluate {
tasks.foo {
systemProperty "foo.bar", "${sum}"
}
}
}
}
}
task foo {
doLast{
println System.properties['foo.bar']
println "${sum}"
}
}
tasks.foo.dependsOn( add )
鉴于此(请注意对System.properties['foo.bar']
的简单赋值(:
def String sum
task add {
doLast {
new ByteArrayOutputStream().withStream { os ->
def result = exec {
executable = 'sh'
args = ['-c', 'echo $((2 + 2))']
standardOutput = os
}
sum = os.toString()
System.properties['foo.bar'] = sum
}
}
}
task foo {
doLast{
println System.properties['foo.bar']
println "${sum}"
}
}
tasks.foo.dependsOn( add )
那么这是输出:
$ gradle foo
:add
:foo
4
4