java - 如何在已编译的 Gradle 插件中运行命令行命令?
问题描述
如何在没有 Gradle DSL ( commandLine 'echo', ':)'
) 的情况下从 Gradle 任务执行 CMD 命令,例如:
open class MyTask : DefaultTask() {
@TaskAction
fun task() {
Runtime.getRuntime().exec("echo :)") //Doesn't print anything
}
}
解决方案
没有打印任何内容,因为该exec
方法在新进程中执行给定命令,与处理 Gradle 任务的进程分开(并且有自己的 I/O 流)。
该exec
方法返回 Process 对象。引用文档,进程“提供对由 ProcessBuilder.start 和 Runtime.exec 启动的本机进程的控制”。
因此,要捕获执行命令的输出,需要从该命令的进程中读取它。
打印输出的简单示例echo :)
可能是:
task something {
doLast {
Process echo = Runtime.getRuntime().exec("cmd /c echo :)")
println new BufferedReader(new InputStreamReader(echo.getInputStream())).readLine()
}
}
(由于 Windows 操作系统,我有cmd /c
命令前缀)
推荐阅读
- c# - 使用 Xunit 运行单元测试
- reactjs - 如何在 React HLSPlayer 中获取点击事件?
- c# - 如何只读取大文件中一行的一部分?
- javascript - Google App Script WebApp Array 不会从后端传递到前端
- node.js - 两个集合之间的 MongoDb 查询
- aws-lambda - 将 Lambda 同步转换为异步事件问题
- java - 在服务器中发布soap服务
- react-native - 如何将参数传递给onPress上的功能以响应本机
- python - 十进制不会转换为 int
- c# - 是否可以从视图模型更改整个应用程序中的字体大小?