Gradle 将动态值作为系统属性传递给方法



我有一个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

相关内容

  • 没有找到相关文章

最新更新