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

时间:2016-04-21 13:49:44

标签: gradle build.gradle gradlew

我正在为我的春季启动项目评估gradle。一切似乎都有效,但这里是我被困的地方。我有2个属性文件。一个用于刺激,即:

  

application_prod.properties

和qa的另一个,即:

  

application_qa.properties

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

  

application.properties

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

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:6)

您需要做的是覆盖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