64 votes

Comment publier n'importe quel pot dans le référentiel local?

J'ai une bibliothèque compilée dans un bocal (pas un projet sbt, pas de code source, juste le fichier jar) qui n'est pas disponible sur un référentiel.

Existe-t-il un moyen de publier le pot localement afin que je puisse ajouter la dépendance en utilisant la notation libraryDependencies += "org.xxx" % "xxx" % "1.0" ? (Je sais déjà comment ajouter le fichier à un projet en le copiant dans le dossier lib .)

62voto

Renaud Points 3226

L'action publish-local est utilisée pour publier votre projet dans un référentiel Ivy local. Par défaut, ce référentiel local se trouve dans $ {user.home} /. Ivy2 / local. Vous pouvez ensuite utiliser ce projet à partir d'autres projets sur la même source de machine

EDIT: Désolé d'avoir mal lu votre question. Voici un exemple pour publier un pot ou des sources dans votre dépôt de lierre local.

35voto

Jacek Laskowski Points 6668

tl;dr je l'appellerais un truc pas une caractéristique de la sbt. Vous avez été prévenu.

Disons que vous avez file.jar publier. Comme pour tout outil de construction, sbt y compris, c'est pour exécuter les tâches qui finit par créer un artefact d'un fichier jar dans la plupart des cas des fichiers dans un projet.

Le projet définit les coordonnées de l'objet.

L'astuce consiste à tirer parti de ce que sbt nécessite de configurer l'environnement (= les coordonnées) pour le pot à être publié (sinon, vous auriez à le spécifier sur la ligne de commande qui peut ou peut ne pas être très convivial).

Créer un build.sbt avec les réglages nécessaires - organization, name, version et, éventuellement, scalaVersion - et l'enregistrer où le fichier jar est.

organization := "org.abc"

name := "my-own-publish-jar"

version := "1.0.0"

scalaVersion := "2.11.3"

packageBin in Compile := file(s"${name.value}_${scalaBinaryVersion.value}.jar")

Vous pouvez vous l'avez remarqué, l'accumulation des changements compile:package de la tâche afin de pointer vers le fichier jar.

C'est tout.

Exécuter sbt publishLocal et le fichier jar doit être dans le Ivy2 local de dépôt, ~/.ivy2/local/org.abc/my-own-publish-jar_2.11/1.0.0/jars/my-own-publish-jar_2.11.jar.

protip l'Écriture d'un plugin pour le faire avec les coordonnées spécifiées sur la ligne de commande devrait être assez facile maintenant.

2voto

lobster1234 Points 4572

Voici un article de blog que j'ai suivi pour pousser l'artefact sbt vers un référentiel maven (local et distant) il y a quelques mois.

http://brizzled.clapper.org/id/100/

0voto

Roy Truelove Points 6532

-1voto

muymoo Points 140

J'ai créé un exemple de Play Framework/sbt projet qui crée un référentiel local (pas seulement publish-local) ici: https://github.com/muymoo/local-ivy-repo-sbt Examiner plus précisément Build.scala

makeLocalRepoSettings(publishedProjects):_*

et

localRepoArtifacts += "org.apache.ws.security" % "wss4j" % "1.6.9"

Ces localRepoArtifacts se trouvent dans mon local de lierre repo, mais je pense que vous pouvez le modifier pour travailler avec le bon vieux pot de fichiers.

Pour l'exécution: play local-repository-created

C'est une version simplifiée de https://github.com/sbt/sbt-remote-control ce qui fait un ensemble beaucoup plus dans leur Build.scala.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X