我的gradle exec任务有问题
代码:
task startup {
final GradleVersion gradleVersion = GradleVersion.current()
println "##### start script #####"
println "gradle version: ${gradleVersion}"
println "project: ${project.group}.fmp-${project.name}-${project.version}"
}
task create(type: Exec) {
workingDir "./scripts"
commandLine "./create_service_from_template.sh", sn, gwv
}
所以当我执行gradle create -Psn=test -Pgwv=4.0
时它会起作用。
但当我开始另一项任务时(如gradle startup
)则出现错误:
Could not get unknown property 'sn' for task ':create' of type org.gradle.api.tasks.Exec.
我以为我可以将创建任务中的行放到doLast
块中,但它不起作用。
有人可以帮我吗?
感谢。
答案 0 :(得分:1)
这是因为Gradle将在所有任务上运行 Configuration 阶段。
一个修复方法是使用局部变量,这些变量通过检查进行初始化,以查看是否指定了属性。见开头:
def sn = project.hasProperty('sn') ? project.sn : ''
def gwv = project.hasProperty('gwv') ? project.gwv : ''
task startup {
final GradleVersion gradleVersion = GradleVersion.current()
println "##### start script #####"
println "gradle version: ${gradleVersion}"
println "project: ${project.group}.fmp-${project.name}-${project.version}"
}
task create(type: Exec) {
workingDir "./scripts"
commandLine "./create_service_from_template.sh", sn, gwv
}