相关疑难解决方法(0)

如何从Kotlin代码中调用外部命令?

我想从Kotlin代码调用外部命令.在C/Perl中,我会使用system()函数; 在Python中,我会使用子进程模块; 在Go中,我会使用os/exec; 等等.但是,我怎么在Kotlin这样做呢?

exec kotlin

43
推荐指数
7
解决办法
2万
查看次数

在Gradle中执行shell脚本

我有一个gradle构建设置,在其开头我想在一个准备我的环境的子目录中执行一个shellcript.

task build << {
}
task preBuild << {
    println 'do prebuild stuff:'
}
task myPrebuildTask(type: Exec) {
    workingDir "$projectDir/mySubDir"
    commandLine './myScript.sh'
}

build.dependsOn preBuild
preBuild.dependsOn myPrebuildTask
Run Code Online (Sandbox Code Playgroud)

但是,当我通过调用gradle myPrebuildTask或简单地构建项目来执行任务时,会发生以下错误:

> A problem occurred starting process 'command './myScript.sh''
Run Code Online (Sandbox Code Playgroud)

不幸的是,这就是我得到的.
我也试过以下 - 同样的错误.

commandLine 'sh mySubDir/myScript.sh'
Run Code Online (Sandbox Code Playgroud)

我在Windows上使用Gradle 1.10(Android需要),在Cygwin shell中.有任何想法吗?

android cygwin gradle

35
推荐指数
5
解决办法
4万
查看次数

Gradle Kotlin DSL 找不到 java.io 包

我正在尝试将 Android 应用程序的 build.gradle 文件转换为 Kotlin DSL。这个文件有一个这样的功能:

def getLastCommitHash() {
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'rev-parse', '--short', 'HEAD'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}
Run Code Online (Sandbox Code Playgroud)

我将其转换为:

fun getLastCommitHash() {
    val stdout = ByteArrayOutputStream()
    exec {
        commandLine("git", "rev-parse", "--short", "HEAD")
        standardOutput = stdout
    }
    return stdout.toString().trim()
}
Run Code Online (Sandbox Code Playgroud)

我收到Unresolved reference: ByteArrayOutputStream错误并应用导入,将其更改为java.io.ByteArrayOutputStream()显示Unresolved reference: io错误。

我做错了什么吗?提前致谢。

android gradle kotlin gradle-kotlin-dsl

13
推荐指数
3
解决办法
2958
查看次数

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

在阅读了有关该主题和 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"

}
Run Code Online (Sandbox Code Playgroud)

gradle kotlin gradle-kotlin-dsl

7
推荐指数
1
解决办法
3895
查看次数

标签 统计

gradle ×3

kotlin ×3

android ×2

gradle-kotlin-dsl ×2

cygwin ×1

exec ×1