ttt
ttt

Reputation: 431

How do I load a .yml property in a Gradle build script?

I have .yml file with the following properties:

spring:
  application:
    name: auth module
  profiles:
    active: prod

My gradle.build script has these settings for the jar task:

jar {
    baseName = 'auth-module-dev'  // `dev` should come from `spring.profiles.active`
    version =  '0.1.2'
}

I want to build jar files with the naming convention auth-module-%profile_name%.jar where %profile_name% is the value of spring.profiles.active. How can I do this?

Upvotes: 10

Views: 26154

Answers (1)

daggett
daggett

Reputation: 28564

assume your yaml file has name cfg.yaml

don't forget to add --- at the beginning of yaml

---
spring:
  application:
    name: auth module
  profiles:
    active: prod

build.gradle:

defaultTasks "testMe"

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath group: 'org.yaml', name: 'snakeyaml', version: '1.19'
    }
}

def cfg = new org.yaml.snakeyaml.Yaml().load( new File("cfg.yaml").newInputStream() )

task testMe( ){
    doLast {
        println "make "
        println "profile =  ${cfg.spring.profiles.active}"
        assert cfg.spring.profiles.active == "prod"
    }
}

Upvotes: 19

Related Questions