Maven profiles equivalent of Gradle

Mehmet Catalbas picture Mehmet Catalbas · Nov 17, 2016 · Viewed 16.1k times · Source

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.

So for example, for the environment dev include devtools and package jar, for prod package war etc.

I know it is not XML based configuration anymore and I can basically write if statements in my build.gradle but is there a recommended way of achieving this?

Can I declare some common dependencies and refer them in a single file instead of creating multiple build files?

Is there a best practice changing build configuration based on the build target environment?

Answer

lance-java picture lance-java · Nov 17, 2016
ext {
    devDependencies = ['org.foo:dep1:1.0', 'org.foo:dep2:1.0']
    prodDependencies = ['org.foo:dep3:1.0', 'org.foo:dep4:1.0']
    isProd = System.properties['env'] == 'prod'
    isDev = System.properties['env'] == 'dev'
}

apply plugin: 'java'

dependencies {
    compile 'org.foo:common:1.0'
    if (isProd) {
       compile prodDependencies
    }
    if (isDev) {
       compile devDependencies
    }
}

if (isDev) tasks.withType(War).all { it.enabled = false }