1

我正在尝试编写执行以下操作的 gradle 任务:

  1. 执行脚本获取一些数据(假设里面有 curl)
  2. 使用此数据设置环境变量。

我想设置这个环境变量,以便其他 gradle 任务可以使用它进行进一步处理。

我的代码如下所示:

task myTask(type: Exec) {
    executable "sh"
    args "-c", "export", "myVar=\$(sh ./script.sh)"
    doLast {
       println System.getenv("myVar") 
    }
}

但是,在执行时,我在控制台中看到我的所有 env 变量都被打印(export KEY=VALUE)并且 System.getenv("myVar") 打印为 null。

我究竟做错了什么?也许有更好的方法来实现我的目标?

4

1 回答 1

1

根据这些问题的答案(更多),动态更新/设置环境变量很容易完成或可能完成:

我认为更好的解决方案是写入所需数据的临时文件,然后将其作为 Gradle 任务的一部分读取:

task myTask(type: Exec) {
    executable "sh"
    args "sh ./script.sh"
    doLast {
       new File("my-file.data")
    }
}
于 2020-03-22T15:06:41.820 回答