web-dev-qa-db-fra.com

Comment ajouter des bibliothèques de pots à un projet IntelliJ Idea SBT Scala?

J'ai créé un projet IntelliJ Idea SBT Scala comme l'article de Heiko Seeberger décrit.

J'aimerais ajouter une bibliothèque Jar (joda-time) à utiliser dans ce projet. Comment faire ça? Le simple fait de les mettre dans le projet/lib n'aide pas. Si je clique avec le bouton droit de la souris sur "Bibliothèques externes" dans l'arborescence du projet Idea, "Nouveau>" est grisé.

27
Ivan

Dans la fenêtre IntelliJ Idea de votre projet, accédez à Fichier >> Structure du projet >> Bibliothèques. Après avoir cliqué sur cette option Bibliothèques, deux panneaux s’affichent. En haut du volet le plus à gauche, cliquez sur le bouton vert "+".

30
Ivan

La meilleure façon de le faire est d’ajouter vos dépendances non gérées à votre build.sbt et de ne pas laisser une partie de votre gestion des dépendances à votre IDE.

Reportez-vous à http://www.scala-sbt.org/release/docs/Library-Management.html pour plus d'informations sur la définition de vos tâches unmanagedBase et unmanagedJars.

10
mcyalcin

Il suffit de déclarer ceci dans build.sbt

unmanagedJars in Compile += file(Path.userHome+"/Your-Jar-Path/Full-Jar-Name.jar")

et le fichier jar requis apparaîtra dans Bibliothèque externe> unmanaged-jars> Nom_Jar_Java.jar Cela changera également si le fichier jar (dans le chemin fourni) est modifié.

6
zero

Dans Idée Intellij:

  • Fichier> Structure du projet> Bibliothèques

En Netbeans:

  • Fichier> Propriétés du projet> Bibliothèques

Dans Eclipse:

  • Cliquez avec le bouton droit sur le projet> Propriétés> Chemin de construction Java> Bibliothèques.
6
svlzx

Pour un projet SBT multi-module (Intellij 2017.3.4, Scala 12.2.4, sbt 1.1.1), la solution acceptée ne fonctionnait que jusqu'au redémarrage ou à l'actualisation du projet. En effet, "Paramètres du projet-> Modules -> Dépendances", puis "+" et "JAR ou répertoires" donne un avertissement "Le module X est importé de Sbt. Toute modification apportée à sa configuration peut être perdue après une réimportation". 

Solution de contournement possible
La suggestion de @zero a fonctionné pour moi comme suit: 

  1. Placez le ou les fichiers JAR dans le répertoire lib du projet.
  2. Dans build.sbt, dans lazy var baseSettings = Seq( ... ), ajoutez la ligne unmanagedJars in Compile += file("YourPath/ProjectBla/lib/controlsfx-8.40.14.jar")
  3. Toujours pas de chance? Dans la fenêtre de l'outil SBT, dans un module paramètres sbt sous unmanagedBase, unmanagedSourceDirectories (et autres), essayez d'appeler les commandes contextuelles "Afficher la valeur" et "Inspecter" plusieurs fois. D'une certaine manière, cela pourrait fonctionner.

    De la réponse d'Eugene Yokota à Comment puis-je ajouter des fichiers JAR non gérés dans sbt-Assembly au fichier JAR final? Une autre option (que je n’ai pas essayée) est d’ajouter un répertoire lib à chaque module requis. 

Espérons que ces étapes vont résoudre le problème ou au moins aider au débogage. 

1
Tupolev._

Créez un répertoire lib dans le chemin racine de votre projet, collez-y vos JAR, exécutez sbt reload, fermez le projet et ouvrez-le à nouveau. Fonctionne pour moi dans IntelliJ 2018.2.4 et SBT 1.0

0
Radu Ciobanu