当前位置: 首页 > 知识库问答 >
问题:

如何从分级构建中设置环境变量?

濮君植
2023-03-14
task setenv(type: Exec) {
    commandLine "export", "SOME_TEST_VAR=aaa"
}
test.dependsOn setenv

并且生成失败:

任务“:MyProject:SetEnv”执行失败。

启动进程“command”export“时出现问题

test.doFirst {
    ProcessBuilder pb1 = new ProcessBuilder("export SOME_TEST_VAR=some test value")
    pb1.start();
}
assertTrue(System.getenv().containsKey("SOME_TEST_VAR"));

我已经单独测试了它:值确实会被传递,并且我的测试任务接收所有东西,无论是systemProperty、environment变量还是jvmarg。

所以Gradle本身在这里并没有什么问题。

当我在实际项目中尝试时,问题就出现了。它使用Spring进行依赖注入。我可能错了,但看起来Spring框架在某个地方清除了这些值。

那个子项目目前被冻结了,我现在无法详细检查我的猜测。

共有1个答案

钱欣悦
2023-03-14

对于测试任务,可以使用environment属性,如下所示:

test {
  environment "VAR", "val"
}

还可以在执行任务中使用environment属性

task dropDatabase(type: Exec) {
    environment "VAR", "val"
    commandLine "doit"
}

请注意,使用此方法,环境变量仅在任务期间设置。

 类似资料:
  • 我想在启动脚本中设置环境变量(如),同时仍然能够仅用一个命令启动应用程序。

  • 我试图在构建过程中设置docker容器中的环境变量,但没有成功。使用运行命令时设置它们有效,但我需要在构建过程中设置它们。 Dockerfile文件 我用来构建的命令 运行 我正在检查可用的环境变量,通过使用 结果是 TEST_ENV不在场

  • 问题内容: 如何从Java设置环境变量?我看到我可以使用来对子流程执行此操作ProcessBuilder。不过,我有几个子流程要启动,所以我宁愿修改当前流程的环境,并让这些子流程继承它。 有一个获取单个环境变量的方法。我还可以使用获取Map完整的环境变量集。但是,调用put()该方法Map将引发-显然,这意味着该环境是只读的。而且,没有。 那么,有什么方法可以在当前运行的进程中设置环境变量?如果是

  • 假设我有. env文件包含如下行: 不像普通的文件有< code>export前缀,所以我不能直接获取文件。 创建从. env文件加载内容并将其设置为环境变量的外壳脚本的最简单方法是什么?

  • 问题内容: 我正在尝试在构建期间在Docker容器中设置环境变量,但没有成功。使用run命令设置它们可以工作,但是我需要在构建期间进行设置。 Docker文件 我正在使用的命令 跑步 我正在通过检查可用的环境变量 结果是 TEST_ENV不存在 问题答案: 用于设置在过程中使用的环境变量-它们不会出现在最终图像中,这就是为什么在使用时看不到它们的原因。 您使用的设置仅在构建映像时相关,而从映像运行

  • 问题内容: 我开始研究一个项目,它使用了Github私有存储库中的一些私有模块,每当我尝试运行它时,都会出现以下错误: 验证github.com/repoURL/go- proto@v2.86.0+incompatible/go.mod:github.com/repoURL/go- proto@v2.86.0+incompatible/go.mod:阅读https://sum.golang。 or