【问题标题】:How to pass run time values to environment variables in Gradle?如何将运行时值传递给 Gradle 中的环境变量?
【发布时间】:2016-04-29 15:50:43
【问题描述】:

我在 gradle 中编写了自定义 exec 任务,我想为环境变量传递运行时参数。

//Set Go Root and Go Path variables
task setGoPath(type:Exec) {
environment 'GOROOT', "$root" // Had to pass /usr/local/go
environment 'PATH', '$PATH:$GOROOT/bin'
environment 'GOPATH', "$path"//path of my current work directory
}

我正在执行类似gradle setGopath -Proot=/usr/local/go -Ppath=/home/go/sample的任务

但它会引发错误,例如 Caused by: java.lang.IllegalStateException: execCommand == null!

我尝试使用单引号代替 GOROOT 值仍然相同。是否可以/正确地像我一样替换环境值?

【问题讨论】:

    标签: gradle groovy


    【解决方案1】:

    您正确设置了可执行文件的环境,但没有指定实际运行的可执行文件。

    确保您指定了可执行文件的executablecommand line 的路径。

    //Set Go Root and Go Path variables
    task setGoPath(type:Exec) {
        environment 'GOROOT', "$root" // Had to pass /usr/local/go
        environment 'PATH', '$PATH:$GOROOT/bin'
        environment 'GOPATH', "$path"//path of my current work directory
        executable '/path/to/executable/to/run'
    }
    

    【讨论】:

    • 我有一个 Go 程序可以下载所有依赖项并将其安装在 GOPATH 目录中。我没有任何特定的可执行文件要运行。如果我不指定可执行文件,环境值将设置为当前进程对吗?
    • 如果您没有可执行文件,为什么要使用Exec 任务?
    • @tim_yates 我在主 src 文件夹下有许多子文件夹,我想安装所有这些可执行文件。所以它不是一条单一的路径。为了更清楚,我尝试执行的 Go 命令类似于 commandLine 'go build -v src/code.test.com/util/*.go' commandLine 'go build -v src/code.test.com/libs/*.go' 在这种情况下,我只想指定那些环境变量并执行这些命令。这将负责安装我的依赖项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多