Vad*_*imo 10 gradle build.gradle
我有一个Gradle构建文件,其中一个任务是登录docker.在此任务中,我希望user/CI提供参数docker_username,docker_password和docker_email.
task loginDockerHub(group: "Docker", type:Exec) {
executable "docker"
args "login","-u", docker_username, "-p", docker_password, "-e", docker_email
}
Run Code Online (Sandbox Code Playgroud)
执行gradle loginDockerHub -Pdocker_username=vad1mo ...all正在按预期工作.
但是,当我执行例如,gradle build我得到错误:
无法在任务':loginDockerHub'上找到属性'docker_username'.
我希望在gradle loginDockerHub不提供-P参数的情况下执行此错误,但不会在不访问docker_username/password参数的其他任务上执行此错误.
如何loginDockerHub在Gradle中为我的任务提供可选参数,这些参数不会使参数成为任何其他任务的必需参数.
Mar*_*ira 15
您可以检查属性是否存在,如果不是则返回默认值.
args "login", "-u", project.hasProperty("docker_username") ? docker_username : ""
Run Code Online (Sandbox Code Playgroud)
更新:从Gradle 2.13开始,您可以稍微简化一下.
args "login", "-u", project.findProperty("docker_username") ?: ""
Run Code Online (Sandbox Code Playgroud)
我无法找到问题的解决方案。此描述暗示了有关在任务中声明操作的信息。将 shell exec 放入操作任务中具有我所期望的行为,因为操作是在任务执行时评估的。
task loginDockerHub(group: "Docker", type:Exec) {
doFirst{
executable "docker"
args "login","-u", docker_username, "-p", docker_password, "-e", docker_email
}
}
Run Code Online (Sandbox Code Playgroud)
执行时loginDockerHub不提供docker_*参数会报错。执行任何其他任务都将按预期进行。
| 归档时间: |
|
| 查看次数: |
5025 次 |
| 最近记录: |