Gradle环境变量。从文件加载

Jus*_*nas 4 bash environment-variables gradle

我是Gradle的新手。

目前,我有此任务:

task fooTask {
    doLast {
        exec {
            environment 'FOO_KEY', '1234567' // Load from file here!
            commandLine 'fooScript.sh'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

fooScript.sh

#!/bin/bash
echo $FOO_KEY
Run Code Online (Sandbox Code Playgroud)

一切正常。但是我拥有env.file所有需要的环境变量。该文件在Docker构建器中使用。

环境文件

FOO_KEY=1234567
Run Code Online (Sandbox Code Playgroud)

问题:如何env.file与Gradle一起使用environment以加载所有需要的环境。参数?

Tho*_*aux 6

我也给出了我的版本(检查行是否不为空且没有注释,也不要覆盖env var):

file('.env').readLines().each() {
        if (!it.isEmpty() && !it.startsWith("#")) {
            def pos = it.indexOf("=")
            def key = it.substring(0, pos)
            def value = it.substring(pos + 1)

            if (System.getenv(key) == null) {
                environment key, value
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是实际上,我认为他们应该将此功能添加为exec插件属性!现在使用.env文件非常普遍。


ToY*_*nos 5

那这个呢 :

task fooTask {
    doLast {
        exec {
            file('env.file').readLines().each() {
                def (key, value) = it.tokenize('=')
                environment key, value
            }
            commandLine 'fooScript.sh'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)