Maven profiles equivalent of Gradle

后端 未结 3 1673
刺人心
刺人心 2020-12-01 08:25

I\'m trying to achieve a simple scenario in my spring boot project build: including / excluding dependencies and packaging war or jar depending on the environment.

3条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-01 08:31

    Sometimes it's also useful to completely switch between different build files by adding some lines of code to the file settings.gradle. This solution reads the environment variable BUILD_PROFILE and inserts it into the buildFileName:

    # File: settings.gradle
    println "> Processing settings.gradle"
    def buildProfile = System.getenv("BUILD_PROFILE")
    if(buildProfile != null) {
        println "> Build profile: $buildProfile"
        rootProject.buildFileName = "build-${buildProfile}.gradle"
    }
    println "> Build file: $rootProject.buildFileName"
    

    Then you run gradle like this, e.g. to use build-local.gradle:

    $ BUILD_PROFILE="local" gradle compileJava
    > Processing settings.gradle
    > Build profile: local
    > Build file: build-local.gradle
    
    BUILD SUCCESSFUL in 3s
    

    This approach also works for CI/CD pipelines where you might want to add extra tasks like checking quality gates or other time consuming things you don't want to execute locally.

提交回复
热议问题