当前位置: 首页 > 知识库问答 >
问题:

如何在Gradle 6.1.1中使用Kotlin DSL运行命令行命令?

蔡鸿骞
2023-03-14

在阅读了多篇关于这个主题和Gradle手册的文章后,我正在尝试运行下面的代码块。我运行下面的命令并得到以下错误:execCommand==null!

关于我在下面的代码块中做错了什么有什么想法吗?

open class BuildDataClassFromAvro : org.gradle.api.tasks.Exec() {

    @TaskAction
    fun build() {
        println("Building data classes.....")
        commandLine("date")
    }
}

tasks.register<BuildDataClassFromAvro>("buildFromAvro") {
    description = "Do stuff"
}

共有2个答案

鲜于允晨
2023-03-14

另一种方法是使用Java ProcessBuilder API:

tasks.create("MyTask") {
    val command = "echo Hello"
    doLast {
        val process = ProcessBuilder()
            .command(command.split(" "))
            .directory(rootProject.projectDir)
            .redirectOutput(Redirect.INHERIT)
            .redirectError(Redirect.INHERIT)
            .start()
            .waitFor(60, TimeUnit.SECONDS)
        val result = process.inputStream.bufferedReader().readText()
        println(result) // Prints Hello
    }
}
夏侯枫
2023-03-14

要定义使用Gradle Kotlin DSL运行命令行的Gradle任务,请在构建文件中执行以下操作:

task<Exec>("buildFromAvro") {
    commandLine("echo", "test")
}

在上面的示例中,命令Line将简单地运行echo,输出值测试。因此,将其替换为您实际想要执行的任何内容。

然后,您可以使用gradle buildFromAvro运行它

更多信息请访问:https://docs . grad le . org/current/DSL/org . grad le . API . tasks . exec . html

 类似资料:
  • 当我在终端中点击curl代码时,我得到了200,所以我假设我编写testStytch的方式到目前为止还可以。但是,一旦我试图集成到java文件中,我就会收到错误的请求响应。我现在有点不知所措。https://github.com/libetl/curl这就是我所说的转换curl代码。 这是我得到的错误。https响应代理{HTTP/1.1 400错误请求[日期:星期四,2021 23:21:424

  • 问题内容: 我正在尝试在执行Windows批处理命令中运行命令的构建步骤下在Jenkins中运行命令。 我写了dir作为命令运行 当作业在Jenkins中运行时,该错误是由文件内容更改触发的,并显示以下错误 请参阅此问题。 问题答案: 回答这个问题:实际上,我还没有在Jenkins中将Windows安装为服务。因此,为此,我们需要转到“管理Jenkins”,然后单击“ Windows即服务”。即,

  • 问题内容: 我创建了一个独立的Java应用程序,试图在Ubuntu 10.04终端中使用“ cd”命令更改目录。我使用了以下代码。 但是上面的代码给出了以下错误 谁能告诉我如何实施? 问题答案: 没有称为的可执行文件,因为它 不能 在单独的进程中实现。 问题在于,每个进程都有自己的当前工作目录,将其实现为一个单独的进程只会更改 该 进程的当前工作目录。 在Java程序中,您 不能 更改当前的工作目

  • 正如独立jar的文档所述,我试图为我的特性提供参数,但不知道如何使其工作。我错过了什么? 我的命令行: 空手道配置。js TestArgs。功能:测试参数 我没有得到任何打印:java-jarc:\karate\karate-0.9。1.jar-a myKey1=myValue1 TestArgs。特色 10:32:57.904[主]信息网。凭直觉。空手道。内蒂。主要-空手道版本:0.9。1. 1

  • 问题内容: 有没有办法在Java应用程序中运行此命令行? 我可以用命令运行它,但是我不能在Java中运行它。 问题答案:

  • 问题内容: 我想创建两个文件的差异。我尝试在Java中搜索可完成此操作的代码,但是没有找到任何简单的代码/实用程序代码。因此,我想如果我能以某种方式从我的Java代码中运行linux diff / sdiff命令并使它返回一个存储diff的文件,那就太好了。 假设有两个文件fileA和fileB。我应该能够通过我的Java代码将它们的差异存储在名为fileDiff的文件中。然后从fileDiff提