如何添加属性的gradle exec任务?

时间:2018-03-10 21:40:41

标签: bash gradle build.gradle

我的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块中,但它不起作用。

有人可以帮我吗?

感谢。

1 个答案:

答案 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
}