2010-08-30 29 views
3

Je suis en train de créer résolveur personnalisé dans mon fichier ivysettings.xml:Ivy résolveur url personnalisé

<ivysettings> 
    <settings defaultResolver="default"/> 
    <resolvers> 
     <chain name="default"> 
      <url name="scala-tools"> 
       <ivy pattern="http://scala-tools.org/repo-releases/[organisation]/[module]/[revision]/ivy-[revision].xml" /> 
       <artifact pattern="http://scala-tools.org/repo-releases/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/> 
       <artifact pattern="http://scala-tools.org/repo-releases/[organisation]/[module]/[revision]/[artifact].[ext]"/> 
      </url> 
      <!--<ibiblio name="ibiblio"/>--> 
     </chain> 
    </resolvers> 
</ivysettings> 

Comme vous pouvez le voir, je viens d'un UrlResolver qui va essayer de trouver mes dépendances dans scala-tools repo. Si je spécifie mes dépendances correctly que lierre va essayer de le trouver en http://scala-tools.org/repo-releases/org.scala-lang/scala-library/2.8.0/scala-library-2.8.0.jar et http://scala-tools.org/repo-releases/org.scala-lang/scala-library/2.8.0/scala-library.jar (oui, d'après mes instructions dans ivysettings.xml) Évidemment, il ne trouve rien. Pour obtenir chose de travail, je dois préciser les dépendances de cette façon:

<ivy-module version="2.2"> 
    <info organisation="org.yoba" module="Yoba"/> 
    <dependencies> 
     <dependency org="org/scala-lang" name="scala-library" rev="2.8.0"/> 
     <!--<dependency org="org.scala-lang" name="scala-library" rev="2.8.0"/>--> 
     <dependency org="org/scala-lang" name="scala-compiler" rev="2.8.0"/> 
     <!--<dependency org="org.scala-lang" name="scala-compiler" rev="2.8.0"/>--> 
    </dependencies> 
</ivy-module> 

Q: Comment changer artefact modèle/quelque chose d'autre pour forcer le lierre à faire son chemin droit du travail?

1: http://scala-tools.org/repo-releases/ scala-tools repo

Répondre

6

ivy.xml

J'ai vérifié le POM pour scala-compilateur et a découvert qu'il fait référence au module scala-bibliothèque. Cela signifie seulement besoin d'une déclaration de dépendance est nécessaire dans le fichier de lierre:

<ivy-module version="2.0"> 
    <info organisation="org.yoba" module="Yoba"/> 
    <dependencies> 
     <dependency org="org.scala-lang" name="scala-compiler" rev="2.8.0" conf="default"/> 
    </dependencies> 
</ivy-module> 
  • Le numéro de version doit être « 2.0 »
  • Inclus le mappage par défaut pour éviter de télécharger les dépendances optionnelles

ivysettings.xml

Je recommande d'utiliser le résolveur ibiblio lorsque downloa ding à partir de n'importe quel référentiel compatible Maven.

<ivysettings> 
    <settings defaultResolver="scalatools"/> 
    <resolvers> 
     <ibiblio name="scalatools" root="http://scala-tools.org/repo-releases" m2compatible="true"/> 
    </resolvers> 
</ivysettings> 

Si vous devez télécharger d'autres bibliothèques le fichier de paramètres peut être améliorée, de sorte que le lierre récupère uniquement les modules scala du référentiel scala

<ivysettings> 
    <settings defaultResolver="central"/> 
    <resolvers> 
     <ibiblio name="central" m2compatible="true"/> 
     <ibiblio name="scalatools" root="http://scala-tools.org/repo-releases" m2compatible="true"/> 
    </resolvers> 
    <modules> 
     <module organisation="org.scala-lang" resolver="scalatools"/> 
    </modules> 
</ivysettings> 
+1

Merci, réponse à ma question pourrait être trouvée dans ibiblio Description du résolveur: "A l'aide de l'attribut m2compatible, vous pouvez bénéficier de la compatibilité du référentiel maven 2 (convertir des points dans l'organisation en barres obliques, rechercher des poms, utiliser des dépendances transitives de poms)" – Jeriho