繁体   English   中英

|| Gradle 任务命令行中的操作员

[英]|| operator in Gradle Task commandLine

再会。 有必要根据前一个命令的结果来决定运行第二个命令。

我需要检查 npm package 是否已安装,如果不存在则开始安装。 npm list -g package (if the package does not exist, this command will return a value different from 0) and npm install -g package commands are used for the issue. 使用||很容易在终端中执行逻辑操作员:

npm list -g package || npm install -g package

然后我在gradle.build文件中创建了installPackage任务:

task installPackage(type: Exec) {
  commandLine 'npm', 'list', '-g', 'package', '||', 'npm', 'install', '-g', 'package'
}

而且这些命令都不起作用。 实际上,结果显示就好像使用npm list -g命令一样。

有没有办法在不使用第三方工具或插件的情况下做到这一点? 可以使用哪些选项? 非常感谢

有一个关于执行多个命令的问题Gradle -- 从任务执行多个命令,但不支持&&|| . 只需从以下对您有意义的解决方案中选择。 我个人更喜欢解决方案1。

1.把你的命令放在一个脚本中,然后调用脚本

  • 更灵活
  • 更具可读性(因为您不需要使用“,”来分隔命令)
  • 但需要参考另一个文件
task installPackageWithScript(type: Exec) {
    commandLine('sh', './bin/installPackage.sh')
}

2.参考Gradle - 如何在doLast中执行命令行并获取退出码? ,从第一个命令中获取退出代码以确定是否需要第二个命令。

  • 无需参考其他文件
  • 但可读性和可维护性较差
task installPackageInline(type: Exec) {
    commandLine('npm', 'list', '-g', 'package')
    doLast {
        if (execResult.exitValue == 0) {
            println "list Success"
        } else {
            println "list Fail, run install"
            exec { commandLine('npm', 'install', '-g', 'package') }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM