2010-12-03 35 views
4

J'ai un dépôt maven2 à partir duquel j'essaye de récupérer un artefact d'instantané avec un horodatage ajouté. Je suis (sans surprise) capable de le récupérer très bien en construisant avec maven2 mais en construisant avec simple-build-tool (sbt), beaucoup préféré par moi, je ne peux pas le tirer vers le bas.Comment puis-je récupérer des dépendances de snapshot à partir de Nexus en utilisant SBT?

Je peux voir à partir de this question about snapshots in Ivy qu'il est possible de configurer Ivy pour obtenir des artefacts de snapshots mais je ne sais pas comment dire à sbt de le faire.

Les bits pertinents de ma configuration actuelle:

val snapshotsName = "Snapshots Repository" 
val snapshotsUrl = new java.net.URL("http://host:port/path/to/root") 
val snapshotsPattern = "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" 
val snapshots = Resolver.url(snapshotsName, snapshotsUrl)(Patterns(snapshotsPattern)) 
Credentials(Path.userHome/".ivy2"/".credentials", log) 

Mise à jour: Après un peu plus bricoler il semble que je peux l'obtenir pour pointer à l'adresse d'artefact correcte avec le motif suivant.

val snapshotsPattern = "[organisation]/[module]/[revision]-SNAPSHOT/[artifact]-[revision](-[timestamp]).[ext]" 

Avec que je dois encore préciser l'horodatage supplémentaire dans la dépendance

val dep = "group" % "artifact" % "0.0.1" extra("timestamp" -> "20101202.195418-3") 

mais il ne tire l'artefact. Cependant, PAS tirer les dépendances de l'artefact. Donc, il semble que j'ai encore quelque chose de mal.

+0

J'ai essayé d'utiliser un fichier ivysettings.xml pour définir le résolveur mais il ne semble pas être lu par SBT. J'ai également essayé d'intégrer le résolveur XML. –

Répondre

2

D'accord, je suis arrivé ce réglé, mais il était pas vraiment un problème SBT il a commis une erreur utilisateur 100%.

Le Nexus I utilisait l'authentification requise. Je n'ai pas les informations d'authentification mis en place correctement (see my authentication question) et parce qu'il n'a pas été correctement authentifiez il n'a pas été de trouver les fichiers pom métadonnées et ainsi SBT imprimé le message d'erreur qu'il ne parvenait pas moi, à tort, supposé qu'il était authentifiant mais ne résolvait pas. J'ai donc commencé à jouer avec les modèles comme en témoigne la question réelle.

Cependant, maintenant que j'ai installé d'authentification correctement je remettais juste une déclaration régulière dépôt comme ceci:

val snapshotsRepo = "Snapshots Repository" at "http://host:port/path/to/snapshots/root/" 

et tout fonctionne. Les artefacts sont récupérés et les dépendances résolues.