2009-06-23 8 views
11

est-ce que quelqu'un sait comment est-ce que je spécifie dans Ivy quelque chose comme miroir/mirrorOf dans Maven? Je travaille avec un proxy Maven local (Nexus) et j'ai besoin de l'outil pour spécifier lequel des référentiels parents devrait accéder au proxy Nexus.Ivy via proxy Nexus

Maven je simplement:

<mirrors> 
    <mirror> 
    <id>central-mirror</id> 
    <mirrorOf>central</mirrorOf> 
    <url>http://localhost:8081/content/repositories/central</url> 
    </mirror> 
</mirrors> 

mais je ne peux pas trouver ce genre d'option Ivy.

Répondre

6

Je ne pense pas qu'une telle option existe directement. Vous pouvez essayer d'implémenter un chain et placer votre référentiel Nexus en avant de central dans cette chaîne. Si je comprends bien comment les chaînes fonctionnent correctement (c'est un gros si), Ivy vérifiera votre dépôt avant central, aussi longtemps que votre référentiel aura le contenu pertinent central ne sera pas nécessaire. Pour plus de détails, voir tutorial.

+1

Merci, c'est ce dont j'ai eu peur. Ivy ne répond pas à mes attentes après avoir travaillé avec Maven. –

+2

Ivy a juste une façon différente d'aborder la gestion des dépendances. –

+6

-1 au commentaire de Mark. Ce n'est pas une manière différente, c'est une fonctionnalité manquante. Par analogie: Imaginez que vous utilisez un navigateur qui n'a pas de paramètres pour la 'Configuration Proxy', cela ne signifie pas qu'il aborde la navigation web d'une manière différente, cela signifie que le logiciel est inutilisable (sans hacks) quand vous avez réellement besoin de définir un proxy. –

-1

J'ai fait la même chose mais avec Archiva, ce qui est très similaire. Vous ne devez déclarer dans une nouvelle chaîne qui suit:

<chain name="private"> 
<url name="archiva" m2compatible="true"> 
    <ivy pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/ivy.xml" /> 
    <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact].[ext]" /> 
    </url> 
</chain> 
+1

L'utilisation d'Archiva pour réaliser le proxy n'est pas dans la portée de la question. Vous pouvez le faire de plusieurs façons différentes. Le problème est d'utiliser le lierre de la même manière que dans le maven. –

+0

Je ne pense pas qu'une telle option existe chez Ivy. –

-1

Archiva gère les référentiels Maven 2 (artefacts avec des données méta Maven) il n'y a généralement pas de données méta Ivy (ivy.xml). Et la disposition Maven 2 est [organisation]/[module]/[révision]/[artefact] - [révision]. [Ext].

Il nous suffit de fournir les informations suivantes

<url name="archiva" m2compatible="true"> 
    <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    </url> 
</chain> 

ou

<settings defaultResolver="archiva"/> 
    <resolvers> 
<ibiblio name="archiva" m2compatible="true" root="http://.../archiva/repository/internal/[organization]/[module]/[revision]/[artifact]-[revision].[ext]"/> 
    </resolvers> 
+0

L'utilisation d'Archiva pour réaliser le proxy n'est pas dans la portée de la question. Vous pouvez le faire de plusieurs façons différentes. Le problème est d'utiliser le lierre de la même manière que dans le maven. –

8

Vous devez créer un résolveur public qui fait ce que vous voulez (plus de détails @Ivy docs)

Fondamentalement enregistrez l'extrait suivant sous $ USERHOME/.ivy2/ivysettings-public.xml. Cela devrait faire l'affaire.

<ivysettings> 
    <resolvers> 
    <ibiblio name="public" m2compatible="true" root="http://localhost:8081/content/groups/public"/> 
    </resolvers> 
</ivysettings> 
  • L'installation standard non modifiée a 'lien' dans l'URL!
  • Si vous avez besoin de déployer des artefacts, je pense que la solution consiste à faire quelque chose de similaire au résolveur partagé (voir le lien vers docs ci-dessus), mais je n'ai pas essayé.
  • J'ai changé votre URL locale pour résoudre le 'contenu/groupes/public' standard qui est mieux puisque dans le fragment de paramètres de maven ci-dessus vous passez tous les appels à travers le miroir, pas seulement ceux à central. Ajoutez simplement des dépôts supplémentaires à ce groupe dans l'interface utilisateur de Nexus au fur et à mesure qu'ils apparaissent et tout devrait bien se passer.
  • Si vos charges du projet, il est propre ivysettings qui ne respecte pas les valeurs par défaut, ces paramètres ne seront pas chargés et vous êtes à nouveau de retour à zéro :(
+1

Je vais essayer, mais il semble que le fait que ivysettings.xml du projet remplace complètement la configuration de l'utilisateur ne va pas être utile pour moi. Mais merci quand même! –

+0

Le problème avec cela est que l'on devrait être en mesure d'obtenir le projet du dépôt et juste le construire. Avec toute modification de l'environnement local, tout est à la fenêtre ... Mais merci quand même pour votre réponse! –

+0

J'ai essayé cette technique avec https://svn.apache.org/repos/asf/ant/core/trunk/[email protected]#checkstyle et cela n'a pas semblé avoir d'effet; les messages renvoyés à "download http: //repo1.maven.org/maven2/..." comme précédemment. –

2

Voici comment je l'ai fait travailler (Le réponse de @Heron ne fonctionne pas pour moi):

Créer un fichier avec ce contenu:

<ivysettings> 
    <settings defaultResolver="default"/> 
    <property name="m2-pattern" value="${user.home}/.m2/repository/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]" override="false" /> 
    <resolvers> 
    <chain name="default"> 
     <ibiblio name="public" m2compatible="true" root="http://nexus-server:8081/nexus/content/groups/public"/> 
    </chain> 
    </resolvers> 
</ivysettings> 

Refere à lui de la fourmi construction:

<ivy:settings file="/Users/wdb/.ivy2/ivysettings-public.xml" /> 

Ivy est maintenant capable de résoudre les dépendances de mon référentiel nexus.

Questions connexes