2010-09-14 11 views
1

Fondamentalement, j'ai un projet et une solution d'intégration continue à laquelle je n'ai aucun accès administrateur, qui ne peut pas atteindre hors de notre réseau. Par conséquent, je veux déployer tous les jars pour le projet dans notre dépôt central Maven que la solution CI peut atteindre. Ils sont dans mon repo local mais c'est un projet assez compliqué. Je ne peux pas simplement mettre un drapeau ou quelque chose et déployer à la fois un pot et tout ce que j'ai d'autre dans le repo local dont dépend le pot? OK, j'ai eu une idée de mes propres depuis la première fois que j'ai écrit ceci. Qu'en est-il:Je veux déployer un jAR ET ses dépendances vers un dépôt distant

  1. Déplacez mon repo maven local à un nouveau nom.
  2. Exécutez une construction avec l'indicateur -U afin qu'un nouveau référentiel soit créé avec uniquement les éléments dont j'ai besoin pour ce projet.
  3. Effectuez une fusion à partir du repo local nouvellement créé vers le repo distant.

Répondre

1

Ce que dit dborba. J'écrirais un script (bash/ruby) pour exécuter le plugin de dépendances Maven, puis j'exécuterais un fichier de déploiement avec les attributs GAE comme indiqué par le plugin de dépendance. En supposant que j'avais plus de quelques dépendances. Certains gestionnaires de référentiel (par exemple, Nexus) sont capables de travailler sur les informations GAE.

+0

J'aime votre approche (+1), mais je le ferais avec Groovy/GMaven, parce que vous pouvez le faire à partir du pom: http://docs.codehaus.org/display/GMAVEN/Exécution + Groovy + Code –

0

Consultez la description et l'utilisation de Maven Deploy Plugin. Je pense que le fichier de déploiement mojo, bien que destiné à déployer des artefacts non créés par maven, pourrait vous aider à faire ce que vous voulez.

0

Dans un article de blog j'ai décrit un scénario similaire: Deploying a folder hierarchy to a Maven Repository. Il utilise GMaven (Groovy intégré dans maven). Si vous prenez le code de cet exemple, passez le répertoire en marchant et marchez les dépendances du projet à la place, vous devriez presque être là.

1

Voici comment je liquidée la manipulation de ce:

D'abord, je copié hors un nouveau nom de mon repo Maven local. Puis j'ai couru "mvn -U clean install" en m'assurant que le repo maven local résultant ne contenait que les jars nécessaires pour cette construction spécifique. Ensuite, je créé ce script (expliqué en détail pour les utilisateurs Windows):

#!/bin/bash 

for I in `find ~/.m2 -name "*.jar"` 
do 
     J=`echo $I | sed 's/jar$/pom/'` 
     mvn deploy:deploy-file -DpomFile=$J -Dfile=$I -Durl=dav:http://maven.our.repo/maven2 -DrepositoryId=sharedRep 
done 

Pour ceux qui ne lisent pas BASH, il saisit les noms de chemin complet et de tous les fichiers jar dans le .m2 sous-répertoire des utilisateurs répertoire personnel. C'est généralement là où se trouve le dépôt local de l'utilisateur. Puis il copie cela et change l'extension du fichier de "jar" en "pom" sur la copie. Ensuite, nous exécutons la commande maven ci-dessous:

mvn deploy:deploy-file -DpomFile=[pom file name here] -Dfile=[jar file name here] -Durl=dav:http://maven.our.repo/maven2 -DrepositoryId=sharedRep 

Cela semble fonctionner OK pour obtenir les bibliothèques dans mon repo local pour la prise en pension partagée.