2015-10-02 1 views
-1

Dans notre entreprise, nous avons un département informatique relativement petit. Nous utilisons git pour partager nos projets et garder la trace de leurs versions. Utilisation typique de git. Mais maintenant j'ai rencontré un problème.Partage de bibliothèques via GIT

Nous avons quelques référentiels GIT contenant des projets Java. Ces projets sont des bibliothèques. Certains des autres projets les utilisent. À l'heure actuelle, si je mettais à jour une bibliothèque, mes collègues devraient extraire le GIT, ouvrir le projet, l'exporter en .jar et l'inclure dans leurs projets. Ce n'est pas comme ça que je le veux. Ce que je préfère faire, c'est juste ajouter une bibliothèque à partir d'un git. Par exemple, dites à l'EDI (soit Android Studio ou Eclipse) de simplement récupérer tous les fichiers de cette bibliothèque depuis GIT.

Quelles sont mes options?

+1

"Quelles sont mes options?" Eh bien, utilisez un système de gestion des dépendances. [Maven] (https://maven.apache.org/) ou [Gradle] (https://gradle.org/), par exemple. – Seelenvirtuose

+0

Je suis d'accord avec Seelenvirtuose, Maven ou Gradle, avec un système d'intégration continue comme Jenkins, et un référentiel d'artefacts. La configuration peut être fastidieuse, mais ça vaut le coup! – NiziL

Répondre

2

Laissez-moi partager mon opinion. GIT est avant tout un outil de contrôle de source. Vous n'avez donc pas besoin de 'stocker' les fichiers jars (bibliothèques compilées) dans git. Jamais :) Cela bloque le dépôt, et ne permet pas de traiter les changements qui ne sont pas censés être binaires. Au lieu de cela, dans le scénario que vous avez décrit, votre collègue ne fonctionne pas avec la bibliothèque dont vous êtes responsable, c'est donc un projet différent dans git.

Selon la façon dont votre équipe/organisations est vraiment petit et si votre collègue et vous êtes dans des projets très différents, il y a deux options:

  1. Conservez tous vos pots dans les différents modules du même projet (dans le même référentiel git). Ensuite, utilisez des outils comme maven ou gradle pour construire votre projet. Je ne sais pas grand-chose sur le développement Android, mais je suis sûr que ces outils ont beaucoup à offrir là-bas. Les deux fournissent une fonction de gestion automatique des dépendances, donc si vous êtes responsable du module A et que votre coéquipier travaille avec le module B du même projet, déclarez simplement la dépendance 'B dépend de A' (maven et gradle le permettent). La surcharge est évidente: vous devez tout compiler chaque fois que vous travaillez avec votre code. Un autre inconvénient est que vous devez suivre le même cycle de publication pour A et B car ils font partie du même projet. Cette configuration est généralement bonne pour les petites organisations ou même les startups ou si vous développez vraiment la bibliothèque qui est pertinente uniquement pour vos collègues (en fait vous travaillez sur le même projet). Maintenant, dans un environnement plus complexe, supposons que les projets A et B sont vraiment différents et développés par des personnes différentes, peut-être des équipes ou des départements.

Dans ce cas, il est préférable de conserver A et B dans différents dépôts git, ce qui permet un cycle de libération différent, etc. Vous feriez mieux d'utiliser maven ou gradle mais cette fois en conjonction avec des outils comme Nexus ou Artifactory. Ce sont des dépôts pour vos artefacts (pots). Comme vous venez évidemment du monde Android, la meilleure analogie que je peux penser est «google play» qui stocke tous les produits, mais cette fois, il conserve différentes versions, code source (en option) ou même javadoc si vous le souhaitez .

Alors maintenant, le flux devrait ressembler à ceci:

Vous (en tant que responsable du projet A) compiler avec Maven ou gradle, tester et déployer Nexus (ou Artifactory). Cela signifie qu'il existe un serveur sur lequel le fichier jar est stocké et qu'il existe une API qui peut être utilisée par maven ou gradle.Maintenant, votre collègue doit décider de la version du projet A qu'il/elle doit utiliser dans son script de construction. Le maven doit être configuré pour «rechercher» des artefacts dans Nexus. Dans les deux maven et gradle son quelques lignes de configurations.

Dans ce cas, votre collègue travaille avec son propre dépôt git du projet B, récupère les modifications et compile (encore avec maven/gradle). En plus de cela, vous pouvez envisager d'utiliser l'outil d'intégration continue comme Jenkins, ce qui augmentera encore votre productivité, mais ce n'est pas directement lié à votre question. .

Liens:

Maven

Gradle

Nexus

Artifactory

Jenkins

Espérons que cela vous aide

0

Comme vous n'utilisez pas Android Studio mais que vous utilisez eclipse, c'est facile. D'abord faire. Fichier-> Nouveau projet-> Projet d'application Android

Oui, dit projet d'application Android, mais ne vous inquiétez pas à ce sujet. Parcourez toutes les étapes, mais ne cochez pas 'Créer une activité' et 'Créer l'icône du lanceur'

Maintenant, le projet apparaîtra sur le côté gauche. Clic droit, et en faire un projet de bibliothèque Android. Maintenant, copiez votre code et votre .git dans le dossier de ce nouveau projet. Maintenant vous devrez faire quelques ogranizings de répertoire.

Maintenant, les autres utilisateurs peuvent l'importer en tant que 'Android porject with existing source' et n'auront pas à faire toutes ces étapes.

Dans les projets qui dépendent de ces projets, vous devez l'ajouter en tant que projet de bibliothèque de dépendances.

+0

Nous utilisons à la fois Android Studio et Eclipse. Juste que les bibliothèques sont principalement faites en éclipse, alors que les applications réelles sont faites dans Android Studio. –

+0

Je pense que l'utilisation des deux est très difficile. Vous pouvez convertir vos projets de bibliothèque en projets de studio Android et les importer en tant que bibliothèques là (plus difficile à faire qu'avec Eclipse mais peut encore faire). Vous pouvez ensuite gérer les librairies avec git et utiliser la fonction push/pull habituelle – middlestump