2017-09-06 1 views
2

J'essaye d'analyser un fichier groovy en utilisant slig de config comme ceci.Can config slurper parse méthodes avec map comme variable d'entrée

fileContents = '''deployment { 
    deployTo('dev') { 
test = me 
    } 
    }''' 
def config = new ConfigSlurper().parse(fileContents) 

Le code ci-dessus fonctionne parce que le deployto ('dev') accepte simplement une chaîne. Mais j'ajoute un paramètre supplémentaire à lui, il échoue avec cette exception:

fileContents = '''deployment { 
    deployTo('dev','qa') { 
test = me 
    } 
    }''' 
def config = new ConfigSlurper().parse(fileContents) 

Il échoue à l'exception suivante:

Caught: groovy.lang.MissingMethodException: Pas de signature de la méthode: groovy. util.ConfigSlurper $ _parse_closure5.deployTo() est applicable pour les types d'arguments: les valeurs (java.lang.String, java.lang.String, script15047332444361539770645 $ _run_closure3 $ _closure10): [dev, postRun, script15047332444361539770645 $ _run_closure3 $ _closure10 @ 6b8ca3c8]

Existe-t-il un moyen de lire ce fichier de configuration avec des arguments supplémentaires dans un module?

+0

Ishu, s'il vous plaît vérifier la solution pour voir si cela résout. – Rao

Répondre

1

Vous y êtes presque. Afin d'utiliser la liste de valeurs, s'il vous plaît faire le changement ci-dessous.

De:

deployTo('dev','qa') 

Pour:

deployTo(['dev','qa']) 

Il serait:

def fileContents = '''deployment { deployTo(['dev','qa']) { test = me } }''' 
def config = new ConfigSlurper().parse(fileContents)​ 
+0

Merci @Rao, Cela nécessite une modification dans le fichier que j'ai besoin d'analyser, ce qui n'est pas possible. Mais il semble que ce soit la seule façon de s'en sortir. –