2010-01-13 3 views

Répondre

9

Ceci est une question assez subjective ... J'applique généralement la règle de base suivante: si j'ai le code pour construire un binaire, vérifiez le code, et jamais le binaire; Si un binaire est requis pour exécuter mon code et qu'il provient d'une source externe, vérifiez le binaire.

Notez que vous aurez envie de se conformer à quelles que soient les conditions légales pourraient venir avec la vérification dans certains binaires tiers à votre dépôt ..

+0

Je ne pense pas qu'il y ait de problèmes légaux, puisque j'utilise principalement les bibliothèques open source. Ouais! J'ai décidé d'enregistrer tous les pots. – Veera

7

Je recommande que la mesure du possible, vous devez utiliser Maven. Ensuite, vous n'avez pas besoin de vérifier les fichiers JAR tiers dans votre référentiel pour les partager avec votre équipe de développement (la plupart du temps). Si vous n'êtes pas encore au courant, Maven effectue deux tâches principales: l'automatisation de la construction et la gestion des dépendances. Chaque projet possède un fichier descripteur qui configure, entre autres, les fichiers JAR que vous utilisez en tant que dépendances. La bonne chose à ce sujet est que Maven va automatiquement résoudre pour vous les dépendances de ces JAR, et leurs dépendances, et ainsi de suite.

+1

Si vous êtes plus à l'aise avec Ant, alors Ivy Apache (http://ant.apache.org/ivy/) pourrait être plus facile à saisir. – notnoop

+3

C'est vrai, même si j'ai utilisé Ant/Ivy et Maven, je préfère de loin Maven. – danben

1

Je gère les référentiels SVN pour une équipe de développement de taille moyenne, et pour faciliter l'utilisation, nous enregistrons les fichiers binaires dont nous avons besoin; même le nôtre dans certains cas. Je pense que cela est toujours pertinent, mais SVN a historiquement mal performé avec les binaires. Un développeur Java chez IBM s'est heurté à ce problème, a enquêté et a rédigé ses conclusions. Vous trouverez peut-être utile:

Performance tuning Subversion: Store and handle binaries without the performance drag

est ici les plats à emporter:

Les résultats de cette enquête sont clairement spécifiques au système objet d'une enquête, il est peu probable que les valeurs réelles indiquées sont d'une grande importance pour les autres systèmes. Les modèles sont plus importants car ils seront répliqués dans n'importe quel système Subversion. Selon nos résultats, lors de l'enregistrement d'un ensemble de binaires Subversion:

  • La méthode la plus efficace du temps est de créer un seul fichier compressé contenant le binaire.
  • La méthode la moins encombrante consiste à utiliser le script d'archivage efficace de Subversion sur une structure de répertoire régulière.
  • L'utilisation de toute forme d'authentification sur le serveur Subversion entraînera une perte de performances.
  • Une machine dédiée et puissante est optimale pour exécuter Subversion.
+0

Le lien est 404 maintenant – koppor

+0

@koppor: WayBackMachine à la rescousse: heureux 18 personnes ont eu la clairvoyance de sauver cette page. :) –

2

Personnellement, je voudrais essayer d'éviter de vérifier dans les dépendances d'un projet dans le référentiel de contrôle de version SCM.Typiquement, cela serait en utilisant Maven comme suggéré dans une autre réponse et en déployant un référentiel Maven interne à l'entreprise qui a l'avantage de rendre cette ressource locale à l'équipe de développement et de fournir un emplacement où les artefacts complétés/versionnés/libérés de votre propre projet peuvent résider . Le problème que je vois avec Jars étant le SCM est que d'abord et avant tout, le SCM est pour la gestion du code source et ils sont optimisés à cet effet. Les artefacts compilés ne sont pas des codes source et sont des binaires, quand vous branchez ou mettez à jour le binaire, vous faites une copie du binaire, car la plupart des SCM ne peuvent pas 'diff' un fichier binaire.

Une autre considération est de savoir ce que vous faites si vous avez deux projets nécessitant des dépendances archivées? Vérifiez-vous les frais séparément dans chaque projet et porter la duplication? Ou faites-vous un troisième projet qui contient uniquement les dépendances? Et maintenant vous gérez manuellement les fichiers jar dans ce projet. Et si vos deux projets nécessitent des dépendances mutuellement incompatibles? En troisième lieu, comment gérez-vous les dépendances inter-projets (où l'un de vos projets dépend de l'autre)? Le fichier jar de l'un est-il vérifié dans l'autre? Qu'en est-il du contrôle de version et d'autres changements? Est-ce que vous n'avez qu'à faire vérifier les deux projets et exiger qu'ils soient construits dans un ordre rigoureux? Selon mon expérience et mon opinion, ces problèmes sont généralement suffisants dans un développement de complexité modérée pour répondre définitivement à la question: Non, il n'est pas acceptable de vérifier les dépendances des fichiers .jar. Utilisez un système de construction tel que Maven ou Ant + Ivy (ou une autre alternative) qui fournit un moyen d'externaliser la gestion et le stockage des dépendances à partir du système de contrôle de code source.

Questions connexes