2010-09-12 6 views
2

J'utilise Apache Ivy pour gérer la dépendance de la bibliothèque. Dans mon entreprise, nous avons un projet "core" qui est publié/versionné périodiquement. Nous avons alors beaucoup de projets "clients" qui sont pour un client particulier. Chaque projet client utilise une version particulière du projet de base que nous maintenons dans le fichier ivy.xml du projet client. Tout va bien.Substitution d'une révision de dépendances Ivy

Parfois, quelqu'un voudra changer de base localement et tester le changement avec un projet spécifique. Dans ce cas, ils vont construire le noyau et le publier dans un dépôt Ivy local, plutôt que le partage.

Pour avoir cette version construite localement dois-je m'assurer que la version construite localement ou le noyau publie avec la même version x.y.z que le projet pointe dans ivy.xml? Ou y a-t-il une autre approche? Je préfère ne pas avoir besoin de personnes pour manipuler le fichier ivy.xml (par exemple, changez-le en core -> latest.integration) car c'est le genre de changement qui est vérifié par accident dans le contrôle de la source. Peut-être existe-t-il un moyen de surcharger la révision d'une dépendance dans ivy.xml, peut-être dans un fichier de propriétés local?

Répondre

1

En développement, je spécifie toujours mes dépendances de projet internes comme "latest.integration" ou "latest.release". Cela résout le problème de ne pas jouer avec les fichiers vérifiés dans le contrôle de la source. La bonne nouvelle est que la tâche ivy publish va résoudre les numéros de révision dynamiques pour vous. Vérifiez le fichier ivy.xml qui est publié dans votre référentiel et vous verrez les derniers numéros de révision (au moment de la publication) remplacés automatiquement.

La tâche ivy deliver est conçue pour ce faire pour vous au sein de votre build. Je l'utilise quand j'ai besoin d'un fichier ivy résolu pour générer un fichier Maven POM pour mon module.

Par exemple:

<ivy:deliver pubrevision="??" status="release" deliverpattern="${build.dir}/ivy.xml"/> 
<ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/pom.xml"/> 

Mon dernier conseil est d'utiliser le lierre buildnumber quand vous avez besoin de connaître le numéro de version suivant dans une séquence. Ivy va travailler sur ce qui est déjà publié dans le dépôt Ivy (beaucoup plus flexible que la tâche de numéro de build ANT standard qui repose sur les fichiers de propriétés). Par conséquent, continuez à utiliser les révisions dynamiques et laissez le lierre calculer les numéros de version réels dans une version particulière.