Gradle 自定义任务中的 systemProperty 未设置 Spring 配置文件

Gradle systemProperty in custom task not setting Spring Profile

如果有一个名为“unit”的 spring 配置文件正在工作,我正在尝试有选择地停用测试:

@DisabledIfEnvironmentVariable(named = "SPRING_PROFILES_ACTIVE", matches = "unit")

如果我 运行 SPRING_PROFILES_ACTIVE=unit ./gradlew clean test 这很好用。我遇到的问题是我不想把所有这些都写出来,而是我想要一个自定义 gradle 任务,也称为“单元”。目前看起来像这样:

task unit(type: Test) {
    useJUnitPlatform()
    systemProperty "SPRING_PROFILES_ACTIVE", "unit"
}

这 运行 是所有测试,即使它们应该被禁用。我尝试了 useJUnitPlatform { sysProp... },我尝试添加 options { sysProp... },我尝试使用 doFirst,我尝试在 build.gradle 和注释,我试过 systemProperties "SPRING_PROFILES_ACTIVE": "unit" 但那不起作用。

我发现了很多 Whosebug 问题,其中人们只是将 systemProperties 放入默认测试任务,但我找不到任何关于自定义任务的内容。

我需要调用什么获取任务才能通过spring配置文件系统属性?

@DisabledIfEnvironmentVariable 注解需要设置环境变量。尝试在您的任务中设置环境变量而不是系统 属性:

task unit(type: Test) {
    useJUnitPlatform()
    environment "SPRING_PROFILES_ACTIVE", "unit"
}