如何通过任务设置gradle这个环境变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过任务设置gradle这个环境变量?相关的知识,希望对你有一定的参考价值。

我有gradle这个应用程序。而我的主要gradle这个文件包括一些任务(常规)。我需要的时候开始我的任务 - 环境变量“LANG”设定编码= ru_RU.koi8-R(用于Windows,Linux),而我的任务完成后 - 环境变量包含初始值(是en_US.UTF-8) 。怎么办呢?请帮帮我。

答案

据我所知,你不能从摇篮任务设置系统环境变量。

但是也可以设置环境变量这一进程。因此,如果你需要设置环境变量只是为构建使用此:

task MyTask(type: Exec) {
  environment 'ENVIRONMENT_VARIABLE_NAME', 'environment_variable_value'

  // run or build code that needs that environment variable
}

您也可以编译取决于任务,所以如果你建立你的代码中设置环境变量在编译之前:

tasks.withType(JavaCompile) {
  compileTask -> compileTask.dependsOn MyTask
}
另一答案

我不得不做一些研究这个主题,并会尝试澄清一些悬而未决的问题。我会做,在两点意见相反,但我没有足够的声誉呢。因为我发现伊戈尔Ganapolsky的评论也对其他网站,但没有答案,每次我觉得有必要在这里写另一个答案即使问题实际上已经回答了。

正如马丁Rajniak说,你可以设置环境变量像他表现。但该变量是仅适用于它是在定义的任务或分别对应的处理。这意味着你不能在其他下面的任务使用。我核实,通过定义像于是两个不同的任务:

task('firstTask', type:Exec) {
    environment "FOO", "bar"

    workingDir '.'
    commandLine 'cmd', '/c', 'print.bat'
}

task ('secondTask', type:Exec) {
    dependsOn firstTask

    workingDir '.'
    commandLine 'cmd', '/c', 'print.bat'
}

该命令print.bat确实只能随声附和环境变量:

@echo off
echo %FOO%

运行使用命令gradle secondTask将产生编译:

> Task :firstTask
bar

> Task :secondTask
ECHO ist ausgeschaltet (OFF).

因此,环境变量是不存在了的secondTask

这么多的实际的话题,但还有一个重要的事情,这可能是伊戈尔的问题的原因:environment不适用于所有的摇篮任务的方法。正如你可以在Exec-task-type的文档中看到的方法environment明确的Exec任务型定义。

为了完成我想提一提,你可以通过使用JavaExec-task-type及其方法systemProperty传递变量的java程序。但是你不能在这里使用environment,因为该方法没有为JavaExec任务型定义。

不过,我自己还在寻找一种方式来定义的环境变量是适用于整个建设没有通过操作系统直接定义它。

另一答案

有一个简单的解决方案

tasks.withType(org.gradle.api.tasks.testing.Test) {
    systemProperty 'host', 'DEV'
}
另一答案

Gradle Environment variables. Load from file问题相结合,适用于Java插件这将是..

tasks.withType(JavaExec) {
    file('.env').readLines().each() {
        def (key, value) = it.tokenize('=')
        environment key, value
    }
}
另一答案

要设置环境变量对于特定的任务类型,可以使用下面的代码片段。环境变量“DOCKER_HOST”将被设置为类型“执行”的所有任务。

tasks.withType(Exec) {
    environment "DOCKER_HOST", "tcp://localhost:2375"
}

以上是关于如何通过任务设置gradle这个环境变量?的主要内容,如果未能解决你的问题,请参考以下文章

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

在 gradle-pitest-plugin 中设置环境变量

Gradle测试任务,如何设置Spring Boot环境进行测试?

windows通过脚本批量设置环境变量(envpath)实战:java环境scala环境maven环境gradle环境nodejsgit等

gradle环境变量设置_配置注意事项

如何在build.gradle中创建文件并设置环境变量并获取文件内的数据?