Gradle : 根据环境复制不同的属性文件并创建jar

Gradle : Copy different properties file depending on the environment and create jar

我正在为我的 spring 引导项目评估 gradle。一切似乎都有效,但这是我被困的地方。我有 2 个属性文件。一个用于产品,即:

application_prod.properties

另一个用于质量检查,即:

application_qa.properties

我的要求是,当我从 gradle 构建(创建 jar 文件)项目时,我必须将属性文件重命名为

application.properties

然后构建 jar 文件。据我所知,gradle 有一个默认的构建任务。所以在这里我必须覆盖它,以便它只考虑所需的属性文件并重命名它,然后根据环境进行构建。

我怎样才能做到这一点?

你需要做的是覆盖processResources配置:

processResources {
    def profile = (project.hasProperty('profile') ? project.profile : 'qa').toLowerCase()
    include "**/application_${profile}.properties"
    rename {
        'application.properties'
    }
}

更改以下代码后,您将获得以下输出:

$ ./gradlew run -Pprofile=PROD
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:run
LOL
Profile: PROD

BUILD SUCCESSFUL

Total time: 3.63 secs

$ ./gradlew run -Pprofile=QA  
:compileJava UP-TO-DATE
:processResources
:classes
:run
LOL
Profile: QA

BUILD SUCCESSFUL

Total time: 3.686 secs

$ ./gradlew run             
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:run
LOL
Profile: QA

BUILD SUCCESSFUL

Total time: 3.701 secs

演示是 here