2012-01-03 2 views
1

J'essaye de créer un plugin Maven pour exécuter des tests de manière isolée dans une architecture orientée service. Étant donné une mise en page de projet comme:Partage de propriétés générées dynamiquement entre des modules frères

Service 
|- webapp 
|- int-test 

Je veux:

  1. générer des valeurs de propriété dynamiquement en appelant aux « fournisseurs de propriété » configurables. Un tel fournisseur de propriété peut appeler un service Web pour obtenir un ID de compte inutilisé sous lequel les données de test seront transférées.
  2. Substituez ces valeurs dans les fichiers de propriétés des modules webapp et int-test.
  3. Démarrez la webapp
  4. Exécutez les tests.

Je suppose que la meilleure façon de le faire serait d'ajouter la configuration du plug-in pour le POM parent, et un utilisateur peut simplement vérifier le projet, cd dans le répertoire du parent pom et exécuter l'objectif du plug-in pour exécuter les tests sur un service fonctionnant localement.

Je ne sais pas exactement comment on ferait l'étape 2 ci-dessus. Idéalement, je préfère ne pas avoir le plugin changer les fichiers de propriétés dans int-test/src/test/resources ou webapp/src/main/config parce que les gens pourraient vérifier ces changements par erreur. Je préfère que les remplacements n'apparaissent que dans les répertoires target/ respectifs.

J'ai vu que le filtrage peut être utilisé pour résoudre des problèmes similaires, mais je n'ai vu aucune solution impliquant le partage de propriétés générées dynamiquement entre les modules.

Toutes les suggestions seraient grandement appréciées.

+0

Que diriez-vous, écrivez votre fichier généré dynamiquement à un fichier de propriétés. Lisez ensuite les propriétés en utilisant le plugin maven properties [1]. Ensuite, exécutez le filtrage basé sur ces propriétés [2]. (AFAIU, nous pouvons donner des propriétés maven comme variables de filtrage) [1] http://haroon.sis.utoronto.ca/zarar/properties-maven-plugin/index.html [2] http: // maven. apache.org/plugins/maven-resources-plugin/examples/filter.html –

+0

Eh bien, le problème est que les propriétés doivent être lues au niveau du POM parent, puis filtrées dans les fichiers de propriétés du projet enfant. –

Répondre

0

Vous pouvez créer une extension de build maven personnalisée et récupérer ces propriétés de façon dynamique à partir d'un service réseau et les injecter dans le POM en mémoire, juste après le démarrage du processus de construction. En effet, c'est ainsi que nous avons résolu ce problème dans notre configuration d'entreprise.

Je viens juste de poster une recette complète to this Stackoverflow answer

Questions connexes