为什么我需要 运行 在构建之前手动清理?

why i need to run clean manually before build?

这是我的配置

application.yml

spring:
    profiles.active: ${env}

build.gradle

processResources {
    expand(project.properties)
}

如果我运行一切正常

gradle clean build -Penv=a
gradle clean build -Penv=b

但是如果我 运行 这个,"env" prop 保留在第一个配置上

gradle build -Penv=a
gradle build -Penv=b

奇怪的是,如果我输入 clean { println "CLEAN" },我会看到每次使用所有 4 个命令都会调用 clean

Gradle 使用每个任务的输入和输出来执行最新检查。如果自上次 运行 以来输入和输出没有改变,则可以跳过它。您需要将 'env' 添加为任务输入,以便在最新检查中考虑它。

例如:

processResources {
    inputs.properties(project.properties)
    expand(project.properties)
}

参见 up to date checks