2011-07-02 2 views
4

J'ai besoin de passer des args à un script groovy qui est exécuté via le gmaven. Je peux le faire sans problème si j'exécute le script directement sur la ligne de commande comme ceci:Comment passez-vous les arguments à gmaven groovy: execute?

printArgs.groovy ...

for (a in this.args) { 
    println("Argument: " + a) 
} 
commande

...

$groovy printArgs.groovy fe fi fo fum 

sortie .. .

Argument: fee 
Argument: fi 
Argument: fo 
Argument: fum 

Je ne vois pas comment passer ces args pour via le plug-in si l'aide mvn groovy: exécuter. Idéalement, je veux définir des paramètres par défaut dans la configuration du plugin, mais être capable de les remplacer quand j'exécute la commande. Ce serait bien de pouvoir les passer en argument-named si possible.

<plugin> 
    <groupId>org.codehaus.gmaven</groupId> 
    <artifactId>gmaven-plugin</artifactId> 
    <version>1.3</version> 
    <configuration> 
     <source>${pom.basedir}/src/main/resources/printArgs.groovy</source> 
    </configuration> 
</plugin> 

Le plugin documentation est un peu rares (et pas à jour). Je vois qu'il y a un paramètre optionnel 'properties' mais je ne pense pas qu'il soit utilisé à cette fin (ou si c'est le cas, je ne peux pas le faire fonctionner!).

cheers :)

Répondre

6

Ok, je peux répondre à ma propre question pour l'amour de référence ...

Plutôt que de passer dans une liste de args, il est possible de référencer les propriétés du projet très simplement comme suit :

def someProp = project.properties['someProp'] 

en faisant cela, vous pouvez référencer toutes les propriétés définies dans une balise dans le pom. De plus, vous pouvez définir les propriétés dans la même balise de configuration que le script groovy.

Gmaven config plugin ...

<configuration> 
    <properties> 
     <name>world</name> 
    </properties> 
    <source>${pom.basedir}/src/main/resources/bootstrap/helloWorld.groovy</source> 
</configuration> 

HelloWorld.groovy ...

println("Hello $project.properties.name!") 
// this also works 
// println("Hello $project.properties['name']!") 
+1

Pour votre information, vous devez charger des ressources à partir du répertoire de sortie, pas leur emplacement source, afin de remplacer '$ { pom.basedir} 'avec $ {project.build.outputDirectory}' –

Questions connexes