2013-03-15 3 views
2

J'ai un projet maven qui dépend d'un autre projet distant sur git. J'ai ajouté unMaven installer à la caisse et construire

<scm> 
    <connection>scm:git:[email protected]:MY-Group/my.project.git</connection> 
    <url>https://github.com/MY-Group/my.project</url> 
</scm> 

dans mes projets actuels pom.xml.

Lorsque je fais mvn scm:checkout, le projet est téléchargé dans le dossier de destination/vérification.

Ce que je voudrais faire est de passer outre mvn install à

  1. Commander ce projet à distance d'abord dans le dossier cible
  2. Construire et installer ce projet à distance du dossier cible
  3. ensuite construire le projet en cours

Est-ce possible? Si oui, comment pouvons-nous y parvenir? Toute aide

+0

Le projet à distance existe pas déjà dans le centre Maven? – khmarbaise

+0

Non, ils ne se trouvent pas dans le référentiel central et ce sont des fichiers spécifiques à l'entreprise. –

+0

Commencez à utiliser un gestionnaire de référentiel et utilisez des systèmes de builds automatiques comme Jenkins qui vous faciliteront la vie. – khmarbaise

Répondre

0

Élaborant sur la réponse de khmarbaise dans les commentaires, le genre de votre commande inter-projet et construire la dépendance est pas ce que Maven est destiné pour, mais est est un système de construction automatique et dépôt Maven peut bien faire.

Un référentiel Maven, comme Artifactory ou Nexus agit comme une version privée de Maven Central.

Jenkins est un système d'intégration continue (j'espère que vous l'utilisez déjà). Vous pouvez configurer Jenkins pour interroger votre serveur SCM à la recherche de modifications et démarrer une génération lorsqu'il voit une modification. Jenkins construira votre artefact avec Maven et le déploiera dans votre dépôt privé. Jenkins peut également comprendre les dépendances inter-projets et démarrer les générations aval après la modification d'un projet amont. En plus d'être la «bonne» façon de gérer votre collection de projets Maven, cela vous fera gagner du temps si les projets sont de taille significative. Supposons que vous ayez un code de serveur de base assez important et que vous écrivez une interface qui parle au serveur. Dans votre question initiale, vous devrez extraire et compiler le serveur afin de travailler sur votre code d'interface, même si vous n'allez pas modifier le serveur. Mieux vaut que Jenkins construise le serveur pour vous. Désormais, les personnes qui travaillent sur le projet serveur vérifient et modifient cela, et les personnes qui dépendent du projet serveur obtiennent un artefact construit à partir du référentiel privé.

0

occasion apache archiva et la question se trouve résolue