IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

Court-cicuiter un repository Maven sans toucher au pom


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2008
    Messages : 179
    Par défaut Court-cicuiter un repository Maven sans toucher au pom
    Bonjour,

    je ne suis pas un grand expert Maven (pardonnez l'euphémisme!), et je vais probablement poser une question dont la réponse m'aurait été facile à trouver si je connaissais un peu mieux. Mais malgré mes recherches (probablement sans les bons mots clefs), je n'ai su trouver mon bonheur, donc j'essaie ici.

    Je travaille sur un projet Java/J2EE avec Maven2 et un repository principal installé sur un repo (nexus) privé. Je dois pour les besoins d'un collaborateur distant installer le même environnement, mais sans qu'il aie accès à notre nexus. Pour simplifier la tâche, on a pensé copier le répertoire ".m2/repository" de notre environnement directement chez lui. Parallèlement, on voudrait courcircuiter le nexus décrit dans le pom.xml (parent) afin d'une part de tester en local chez nous la manip, et d'autre part de s'assurer qu'il n'essaierai jamais de s'y connecter (car je suppose que les timeout risquent de ralentir les builds).
    Je pensais pour ce faire qu'il suffisait de définir un miroir dans le ".m2/settings.xml" pour remplacer l'adresse du repo nexus (dont l'id est "monProjet.nexus")...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          <mirror>
            <id>Central</id>
            <name>Central</name>
            <url>http://repo1.maven.org/maven2</url>
            <mirrorOf>monProjet.nexus</mirrorOf>
          </mirror>
    Je partais du principe a priori que Maven allait d'abord consulter le répertoire "repository", puis continuer sur la centrale...

    Mais c'est là que le bât blesse : il semblerait que Maven ignore les librairies que j'ai placées dans le central, car en testant cette config chez moi, et alors que toutes les libs nécessaire ont déjà été téléchargées, il me signale un grand nombre de libs manquantes : elles sont bien présentes dans le répertoire mais pas sur le central maven (celà je le confirme). Je dois probablement me méprendre sur le fonctionnement de Maven car je pensais que le répertoire "repository" était la première source de maven...

    The following artifacts could not be resolved: javax.media:jai-core:jar:1.1.3, com.sun.media:jai-codec:jar:1.1.3, net.sf.json-lib:json-lib:jar:2.4, org.richfaces.framework:richfaces-impl:jar:3.3.3.Final, org.richfaces.framework:richfaces-api:jar:3.3.3.Final, org.richfaces.ui:richfaces-ui:jar:3.3.3.Final: Could not find artifact javax.media:jai-core:jar:1.1.3 in Central (http://repo1.maven.org/maven2)
    Donc si quelqu'un pouvait me corriger, ou m'expliquer de quelle façon je peux proprement courcircuiter le repo nexus, je lui en serai (presque) éternellement reconnaissant!

    Merci d'avance de votre lecture jusqu'à ce point, et le cas échéant pour vos remarques ou suggestions.

  2. #2
    Membre émérite

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Par défaut
    Ce n'est pas un bonne idée de toucher au .m2 ! Il doit ce remplir au file de l'eau... Au mieux, tu peux faire un mvn dependency:go-offline pour rapatrier toutes les dépendances localement; puis, mvn -o pour lancer/tester Maven coupé de l'Internet (ou mettre l'option offline dans ton settings.xml) !

    Pour rediriger toutes les requêtes sur le repo Central US tu devrais pouvoir faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <mirror>
            <id>central-us</id>
            <name>Central US</name>
            <url>http://repo1.maven.org/maven2</url>
            <mirrorOf>*</mirrorOf>
    </mirror>
    "central" est un identifiant interne... Je me demande si tu peux utiliser cet ID sur un de tes mirroirs ! Autant donner un nom différent pour la même URL... Le '*' redirige toutes les requêtes sur le mirroir !
    Dans tous les cas: IMHO, Maven ne fait pas un substitution d'URL mais tente les différents choix (i.e. ce n'est pas un rééelle redirection au sens réseau) !

    Normalement on fait l'inverse (i.e. on redirige tout sur nexus)... et ,on crée un fake profil Central !

    Note: les jars que tu signales sont bien dans le repo Central de Maven. Donc pas téléchargé dans ton cas...

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Roger_Rabbit Voir le message
    alors que toutes les libs nécessaire ont déjà été téléchargées, il me signale un grand nombre de libs manquantes : elles sont bien présentes dans le répertoire mais pas sur le central maven (celà je le confirme).
    Avec le message d'erreur que tu donne, non, les librairies n'ont pas été téléchargées.

    Le plus simple serait quand même de soit
    -> lui donner cette accès en lecture à votre repository (à quoi bon mettre un repository si une partie de l'équipe ne peux pas l'utiliser)
    -> Soit qu'il récupère le pom parent, y change le repository et le déploie sur son repository à lui.

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2008
    Messages : 179
    Par défaut
    Merci de vos réponses, très instructives, et fort utiles aussi.
    J'ai tenté le mode offline après avoir forcé le download, et effectivement, ça m'a permis de tester avec succès la config sans accès au nexus. Si j'osais, je dirais donc que c'est un grand pas pour moi ...et un petit pas pour le pom!

    Concernant l'accès au nexus, je suis conscient que c'est très certainement la meilleure solution (une demande est en cours). Mais dans une configuration multi-collaborateurs voire multi-partenaires, il y a certaines réticences qui ont la dent dure (parfois à juste titre!).
    Par contre, on va peut-être envisager de leur configurer le nexus avec les bons proxies, et de faire la redirection vers là à la place.

    Autre point, je confirme que - malgré le message d'erreur qui indiquait le contraire - les libs se trouvaient bien dans mon répertoire "repository".
    Je prends pour exemple la jai-core:1.1.3 que je retrouvais bien dans mon arbo (AVANT que je ne force maven à passer offline) :


    Donc quelquechose semble toujours m'échapper dans le fonctionnement de Maven : ce répertoire est-il bien consulté en mode online, ou est-il seulement consulté offline?


    Pour terminer, Philippe : tout rediriger vers le central me prive des repos additionnels non? Ou est-ce que les repos additionnels que je pourrais spécifier dans le settings sont quand même pris en compte en plus du miroir?
    Par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
      <profiles>  
          <profile>   
            <id>profileByDefault</id>
            <activation>
              <activeByDefault>true</activeByDefault>
            </activation>
            <repositories>
              <repository>
                <id>JBOSS.repo</id>
                <name>repo jboss</name>
                <url>http://repository.jboss.org/nexus/content/groups/public/</url>
              </repository>
              <repository>
                <id>spring.security.facelets</id>
                <name>Repo Spring security facelets</name>
                <url>http://spring-security-facelets-taglib.googlecode.com/svn/repo/</url>
              </repository>
            </repositories>
          </profile>
        </profiles>
        <activeProfiles></activeProfiles>
    Voilà pour les questions.
    Merci encore de vos réponses et bonne fin d'année!!

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Si votre serveur nexus ne sert que de proxy à d'autres repos public, installer chez ton collaborateur un nexus est le plus simple après lui donner accès au vrai nexus utilisé par tout le monde.


    Pour le repo non consulté, si, les fichier locaux ont toujours priorité, sinon une compilation prendrait systématiquement des 10aines de minutes. Maintenant si maven ne les a pas trouvé, c'est soit qu'il n'étaient pas là, soit que t'as demandé à maven de prendre un autre repository local (par exemple en changeant d'utilisateur ou en précisant manuellement le dossier repository à utiliser).

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2008
    Messages : 179
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Si votre serveur nexus ne sert que de proxy à d'autres repos public, installer chez ton collaborateur un nexus est le plus simple après lui donner accès au vrai nexus utilisé par tout le monde.
    Non, il ne sert (heureusement!) pas que de proxy. Il faudra rajouter quelques libs maison. Mais le principe reste valable.

    Pour le reste : il semble se confirmer que j'ai commis une erreur de config qq part. Je vais regarder de ce côté là (plus pour ma culture maintenant!).
    En attendant, mon problème est quand même résolu, je me sens (un petit peu) moins inculte

    Merci encore!

  7. #7
    Membre émérite

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Par défaut
    Si c'est résolu

    Concernant les miroirs: il ne s'agit pas d'une substitution à proprement parlé mais d'un ordonnancement (le miroir devrait être consulté en premier). Les dépendances que tu récupères ne sont pas attachées (sauf exception) à un unique repo... Regardes les requêtes sortantes.

    Penses aussi à l'option -X et/ou l'option "Output Debug" si tu utilises M2E !

    a+
    Philippe

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Roger_Rabbit Voir le message
    Non, il ne sert (heureusement!) pas que de proxy.
    Y a pas de mal à ce qu'il ne serve que de proxy. C'est même recommandé d'avoir au minimum un proxy maven dans l'entreprise pour éviter que tout le monde soit à l'arrêt en cas de coupure réseau ou d'arrêt de l'un ou l'autre repository externe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Crypter transit des données sans toucher au code source
    Par thecrafty dans le forum Protocoles
    Réponses: 2
    Dernier message: 08/06/2007, 17h31
  2. Supprimer une classe Fille sans toucher a la Mere
    Par 17mounir dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/01/2007, 12h27
  3. [Maven2]création d'un repository maven
    Par xixi31 dans le forum Maven
    Réponses: 6
    Dernier message: 31/08/2006, 09h26
  4. Réponses: 4
    Dernier message: 25/04/2006, 19h41
  5. [J2ME][MIDlet]rafraichir une image sans toucher au form?
    Par noobiewan kenobi dans le forum Java ME
    Réponses: 1
    Dernier message: 05/09/2005, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo