2010-06-21 5 views
2

Nous avons un certain nombre de produits composés d'un grand nombre de modules, dont certains sont partagés entre certains produits. Ils sont répartis sur quelques référentiels de contrôle de version.Gestion des dépendances déclarative pour les projets source multi-module dans le contrôle de version

Les produits sont construits par des scripts maîtres Ant qui sont chargés de vérifier tous les modules et de les construire dans le bon ordre. Les modules n'ont pas de cycles de libération propres. Maintenant, j'aimerais beaucoup aller à la gestion des dépendances déclarative, mais il semble que toutes les solutions (Maven, Ivy) dépendent des artefacts plutôt que du code source sous contrôle de version. En fonction des artefacts, ça tournerait la tête pour nous, alors je préfère ne pas le faire. Je voudrais quelque chose comme Ivy, mais où je peux dire que mon produit dépend des modules foo, bar et baz (branche 2.0) et il vérifierait le code source d'un ou plusieurs gestionnaires de code source (spécifié dans une certaine configuration) à un espace de travail plat.

je prévois d'utiliser gradle pour la construction, donc une solution qui correspond à ce serait très apprécié ...

Répondre

1

Gradle intègre le projet de lierre pour sa dépendance à la gestion de sorte que vous serez confrontés aux mêmes types de problèmes .

La gestion des dépendances est un mécanisme qui permet de décomposer une construction monolithique volumineuse en compositions de composants plus petites, chacune publiant sa sortie dans un référentiel commun destiné à être utilisé par d'autres modules dépendants. Cela signifie donc que vous devez d'abord prendre une décision éclairée pour briser votre grande construction, ou simplement vous contenter d'utiliser la gestion des dépendances pour contrôler les bibliothèques open source tierces.

En supposant que vous avez aucun contrôle sur le fait que vous avez plusieurs référentiels SCM je recommande l'approche suivante pour créer une version centralisée (je suppose que vous utilisez ANT + subversion):

1) Créer un projet maître qui contient vos modules enfants

2) Chaque module enfant est ajouté au projet maître en tant que définition external. Cela permet à une caisse du maître, à son tour, la caisse chaque projet enfant automatiquement

3) Le projet maître build.xml contient un fichier de construction qui utilise le lierre buildlist tâche de construire les projets enfants dans le bon ordre basé sur les dépendances déclarées dans les divers fichiers enfants ivy.xml.

Un exemple d'une construction multi-projets est here

+0

« dépendances de projet » de Gradle est ce que je dois (je pense) pour construire des modules dans le bon commande et référence des pots construits, une fois que tout est vérifié. Svn: les externals fonctionneraient probablement, mais je ne suis pas vraiment content d'avoir à spécifier des dépendances dans plus d'un endroit. En outre, il est statique et n'autorise pas la magie des temps de paiement comme "obtenir la même branche nommée que je suis de cet autre module, s'il existe, sinon obtenir le tronc". Je reçois plus de suggestions avant de prendre ma décision ici ...:) – simon

+0

Les projets Mult-Project en Gradle fonctionnent de la même manière http://www.gradle.org/0.9-preview-3/docs/userguide/multi_project_builds.html –

Questions connexes