首页 文章

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

提问于
浏览
5

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

application_prod.properties

和另一个为qa:

application_qa.properties

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

application.properties

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

我怎样才能做到这一点?

1 回答

  • 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 .

相关问题