Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 836
ttt Avatar asked Jan 18 '18 09:01

ttt


People also ask

How do I use build Gradle properties?

System propertiesUsing the -D command-line option, you can pass a system property to the JVM which runs Gradle. The -D option of the gradle command has the same effect as the -D option of the java command. You can also set system properties in gradle. properties files with the prefix systemProp.


1 Answers

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"
    }
}
like image 113
daggett Avatar answered Sep 21 '22 16:09

daggett