4

我希望 gradle 插件能够获取在withEnv步骤(或其他包装类型)中设置的环境变量。当我使用sh步骤调用 gradle 时,找到了变量,但是当我使用 gradle 插件时,却没有。

gradle 插件执行与此等效的操作:

EnvVars env = run.getEnvironment(taskListener);
launcher.launch().cmds(args).envs(env).stdout(gca)
                        .pwd(rootLauncher).join();

run.getEnvironment() 的 javadoc 指出:

返回包含用于启动此构建进程的环境变量的映射。调用外部进程的 BuildSteps 应该使用它。这允许 BuildWrappers 和其他项目配置(如 JDK 选择)生效。

与早期的 getEnvVars() 不同,此映射包含整个环境,而不仅仅是覆盖,因此可以内省值以更改其行为。

如果我调试插件,我发现环境中传递给 gradle 调用的变量少于十几个,这些变量withEnv都不是应该提供的。据我所知,该sh步骤使用了一个完全不同的扩展点,并且直接给出了一个EnvVars看起来更完整的实例。我相当确定问题不在withEnv,但我不知道如何修复 gradle 插件。

我打错电话了吗?或者可能是错误的扩展点?

4

1 回答 1

3

不要打电话Run.getEnvironment。而是使用EnvVars传递给SimpleBuildStep.perform.

于 2015-06-25T19:36:27.363 回答