2010-05-17 4 views
2

J'ai le cas d'utilisation suivant: Mon application est démarrée avec un script Ant, qui pose à l'utilisateur plusieurs questions sur la configuration du projet (paramètres de base de données, etc.). Ces paramètres sont stockés dans un fichier de propriétés.Modifiez les propriétés dans pom.xml lors de l'exécution avec Maven Ant Tasks. C'est possible?

Ensuite, je veux exécuter Maven à partir de mon script Ant par Maven Ant Tasks, qui devrait remplacer les propriétés prédéfinies dans mon pom.xml avec les propriétés du fichier de propriétés. Je ne veux pas changer le fichier pom.xml.

Existe-t-il un moyen de le faire? Merci d'avance!

(BTW i already tried a similar approach with maven only, which seems to be impossible at the moment)

Répondre

7

Vous pouvez redéfinir les propriétés de la ligne de commande en utilisant maven -D et ceux-ci vont remplacer les propriétés dans votre fichier de projet.

Par exemple, dans pom.xml

<properties> 
    <myProp>A</myProp> 
    </properties> 

Dans votre fourmi build.xml, vous pouvez appeler la ligne de commande mvn comme

mvn -DmyProp=B install 

qui Mettra myProp à B dans le projet . Le mvn ant task page décrit l'utilisation d'une macro pour appeler la ligne de commande maven. Cela peut être facilement personnalisé pour passer également les propriétés supplémentaires. Pour cela, utilisez le plugin exec pour lancer maven, en transmettant les paramètres de la commande de la même manière que pour la tâche ant: java.

1

Avez-vous essayé de remplacer les propriétés à la volée par la tâche <copy>?

Supposons que vos propriétés sont dans le fichier settings.properties. Définir les propriétés à remplacer dans votre pom.xml avec @ autour d'eux, vous pouvez copier le fichier pom et remplacer certaines propriétés en même temps. .: par exemple

<copy file='pom.xml' toFile='real-pom.xml'> 
    <filterset filtersfile='settings.properties' /> 
</copy> 

Ensuite, vous invoquez maven:

mvn -f réel pom.xml

Questions connexes