Gradle 在任务中设置 buildConfigField

Koa*_*lix 6 java gradle build.gradle

我有一个 java 项目,我使用 de.fuerstenau.buildconfig gradle 插件从构建脚本中设置 java 常量。我有两个任务,它们会为“HOME”常量创建一个具有不同值的战争:

buildscript {
repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.de.fuerstenau:BuildConfigPlugin:1.1.8"
  }
}
apply plugin: 'de.fuerstenau.buildconfig'

[... left out]

buildConfig { 
    buildConfigField 'String', 'HOME', 'TEST_HOME'
}

task createLiveOnly(type: War, dependsOn: classes, group: 'build') {

    buildConfig {
        buildConfigField 'String', 'HOME', 'LIVE_HOME'
    }

    archiveName = 'live.war'
    destinationDir = file("$buildDir/libs")
}

task createTestOnly(type: War, dependsOn: classes, group: 'build') {
    buildConfig {
        buildConfigField 'String', 'HOME_ENV_NAME', 'ISAMT_TEST_HOME'
    }
    archiveName = 'test.war'
    destinationDir = file("$buildDir/libs")
}

task createWars(dependsOn: [createLiveOnly, createTestOnly], group: 'build')

[... left out]

}
Run Code Online (Sandbox Code Playgroud)

意图:运行createLiveOnly时,HOME = 'LIVE_HOME'。运行 createTestOnly 时,HOME = 'TEST_HOME'。运行 createWars 时,它会为 HOME 的两个值创建这两个值。运行其他所有内容(例如标准 gradle war)时,它默认为“TEST_HOME”。不幸的是,这不起作用,因为即使仅运行 createLiveOnly,常量也始终设置为“TEST_HOME”。为什么?我该如何解决它?

感谢您的回答!