Comment créer un projet SBT avec IntelliJ Idea?

146

Je viens de commencer le développement de Scala / LiftWeb / Sbt, et j'aimerais importer un projet Sbt dans IntelliJ Idea. En fait, j'ai réussi à importer mon projet de deux manières différentes:

1) avec Maven. J'ai créé un projet Maven, et en plus j'ai créé un projet Sbt, que j'ai ensuite importé dans IntelliJ. Je pourrais alors facilement démarrer, arrêter le serveur de jetée et faire d'autres choses. Mais ce n'est pas ce que je veux. Je veux faire la même chose, juste sans Maven. Cela m'a conduit à

2) avec Eclipse. J'ai donc créé un nouveau projet Sbt (avec un petit script que j'ai écrit, configurant le projet Sbt pour être un WebProject). J'ai ensuite utilisé le plugin sbt-eclipsify pour 'convertir' le projet pour Eclipse, que j'ai ensuite importé dans IntelliJ (source existante -> eclipse). Mais les problèmes ont commencé ici: je ne parviens pas à faire fonctionner le plugin IntelliJ Sbt.

Est-ce que quelqu'un peut m'aider avec ça?

ksemeks
la source
Pour quelqu'un qui a besoin d'une réponse rapide ou si c'est un besoin urgent, allez simplement sur github et trouvez un projet scala simple. Téléchargez puis importez dans votre IDE. Vous devriez pouvoir accéder au projet scala. Happy time
Un utilisateur

Réponses:

170

Il existe trois méthodes de base pour créer un projet - les versions modernes d'IntelliJ peuvent importer un projet sbt hors de la boîte, sinon vous pouvez soit utiliser le plugin sbt pour générer un projet IntelliJ, soit utiliser le plugin IntelliJ Scala pour créer un projet sbt. Les fonctionnalités de base fonctionnent immédiatement avec les deux solutions, certaines versions complexes peuvent avoir des problèmes, alors essayez d'autres outils pour voir si cela fonctionne.

IntelliJ

IntelliJ IDEA est devenu tellement meilleur ces jours-ci. La version actuelle (14.0.2) prend en charge les projets sbt prêts à l'emploi avec le plugin Scala. Installez simplement le plugin et vous devriez pouvoir ouvrir des projets Scala / sbt sans aucun problème.

Plugin Scala sous Plugins dans les Préférences

Avec le plugin, pointez simplement sur un projet sbt et IDEA va vous proposer un assistant pour ouvrir ce type de projet.

Importer un projet SBT

Plug-in IntelliJ Scala

Le plugin IntelliJ peut être trouvé ici http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA ou peut être installé directement à partir de l'EDI en utilisant la boîte de dialogue Paramètres -> Plugins. Ensuite, on peut simplement faire File -> New Project -> Scala -> SBT based. IntelliJ générera build.sbt de base, téléchargera les dépendances nécessaires et ouvrira le projet.

Plugin SBT

Le plugin Sbt qui génère un projet d'idée basé sur les fichiers sbt peut être trouvé ici: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ et 13.0+

Ajoutez simplement addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")à votrebuild.sbt ; aucun résolveur supplémentaire n'est nécessaire.

Versions plus anciennes:

SBT 0.11+

Créez et ajoutez les lignes suivantes à ~/.sbt/plugins/build.sbtOUPROJECT_DIR/project/plugins.sbt

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

Utilisation gen-idea dans sbt pour créer des fichiers de projet IDEA.

Par défaut, les classificateurs (c'est-à-dire les sources et les javadocs) des dépendances sbt et de bibliothèque sont chargés s'ils sont trouvés et des références ajoutées aux fichiers de projet IDEA. Si vous ne souhaitez pas les télécharger / les référencer, utilisez la commande gen-idea no-classifiers no-sbt-classifiers.


SBT 0.10.1 (selon l'auteur du plugin, 0.10.0 ne fonctionnera pas !)

Créez et ajoutez les lignes suivantes à ~ / .sbt / plugins / build.sbt:

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"

Utilisez la gen-ideatâche sbt pour créer des fichiers de projet IDEA.

Par défaut, les classificateurs (c'est-à-dire les sources et les javadocs) des dépendances sbt et de bibliothèque sont chargés s'ils sont trouvés et des références ajoutées aux fichiers de projet IDEA. Si vous ne souhaitez pas les télécharger / les référencer, utilisez la commande gen-idea no-classifiers no-sbt-classifiers.


SBT 0.7

Pour l'utiliser, lancez simplement ceci depuis votre shell sbt, il utilisera le plugin comme programme externe:

 > *sbtIdeaRepo at http://mpeltonen.github.com/maven/
 > *idea is com.github.mpeltonen sbt-idea-processor 0.4.0
 ...
 > update
 ...
 > idea
 ...

Vous pouvez également ajouter un trait dans la définition de votre projet, comme vous le souhaitez:

import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
  lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
   // ...
}
Steve Gury
la source
4
Je suis totalement converti à ce plugin. Utilisez-le en combinaison avec le plugin idea-sbt-plugin, qui vous permet de déléguer la construction de votre projet à SBT, et d'utiliser SBT de manière interactive à partir d'une fenêtre outil dans IDEA. La version 0.2.0-SNAPSHOT de sbt-idea corrige quelques petits désagréments - création d'un projet parent et conservation de la configuration manuelle d'IntelliJ.
retronym
Merci pour ce plugin. C'est vraiment utile!
ksemeks
4
Je retire ma réponse. C'est un excellent plugin et je l'utilise maintenant à chaque fois.
Synesso
1
J'ai ajouté une réponse pour SBT 0.10.0, qui est complètement différente de SBT 0.7.x + stackoverflow.com/questions/4250318/…
opyate
Merci opyate, j'ai mis à jour mon post en fonction de votre commentaire
Steve Gury
11

Pour l'instant, je le fais à la main. C'est assez simple.

  1. Créer le projet avec SBT
  2. Créer un nouveau projet IDEA avec le même chemin racine
  3. Créer un module avec le même chemin racine
  4. Définissez src / main / scala comme chemin src sur le module
  5. Définissez src / test / scala comme chemin de test sur le module
  6. Ajouter scala-library.jar en tant que bibliothèque
  7. Ajouter lib (si elle est présente) en tant que répertoire jar dans une bibliothèque de modules
  8. Ajouter lib_managed / compile (s'il est présent) en tant que répertoire jar dans une bibliothèque de modules
  9. Ajouter lib_managed / test (s'il est présent) en tant que répertoire jar dans une bibliothèque de modules

C'est tout de mémoire. Ce serait mieux s'il était automatisé, mais ce n'est pas grave comme c'est le cas actuellement.

Une mise en garde: l'approche ci-dessus ne fonctionne pas bien avec la sbt nouvelle école, c'est-à-dire les versions 0.10 et plus récentes, car elle ne copie pas les dépendances dans lib_managed par défaut. Vous pouvez ajouter

retrieveManaged := true

dans votre build.sbt pour lui faire copier les dépendances dans lib_managed.

Synesso
la source
Mais, démarrez-vous votre projet (jetée) depuis IntelliJ ou depuis un terminal? Je ne peux pas configurer le lanceur / compilateur de projet à partir de l'EDI.
ksemeks
Une dernière chose: j'ai fait tout ce que vous avez écrit, mais IntelliJ dit "Impossible de résoudre le symbole ne" pour l'importation "import net.liftweb.LiftRules"
ksemeks
J'ai réussi à contourner l'importation. J'ai dû importer / lib_managed / compile au lieu de / lib_managed
ksemeks
6
Réponse rétractée! Utilisez le plugin sbt-idea.
Synesso
7

Tempus fugit et IntelliJ IDEA sont devenus tellement meilleurs ces jours-ci. C'est 2015 après tout, n'est-ce pas?

Cela dit, la dernière version d'IntelliJ IDEA 14.0.2 prend en charge les projets sbt prêts à l'emploi avec le plugin Scala . Installez simplement le plugin et vous devriez pouvoir ouvrir des projets Scala / sbt sans trop de problèmes.

Plugin Scala sous Plugins dans les Préférences

J'utilise la version Early Access du plugin qui est 1.2.67.6.EAP au moment de la rédaction.

Avec le plugin, pointez simplement sur un projet sbt et IDEA va vous proposer un assistant pour ouvrir ce type de projet.

Importer un projet SBT

À propos de sbt-idea dans sbt 0.12.4

Pour sbt 0.12.4, le fichier de configuration du plugin à l'échelle du système - ~/.sbt/plugins/build.sbtou PROJECT_DIR/project/plugins.sbt- doit avoir les lignes suivantes:

resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"

addSbtPlugin(dependency="com.github.mpeltonen" % "sbt-idea" % "1.5.0-SNAPSHOT")

Courir sbt gen-idea pour générer les fichiers de projet IDEA.

Lisez le site Web du plugin sbt-idea pour plus d'informations à jour. Vous pouvez également trouver mon entrée de blog Importer un projet basé sur sbt dans IntelliJ IDEA 13 (avec sbt-idea, Scala 2.11 et sbt 0.12) utile.

Jacek Laskowski
la source
Lors de la création d'un nouveau projet. Après sbt gen-idea, le projet est vide. Aucune structure, pas src, dossier de test. Et c'est nul ..
ses
Comment avez-vous créé le projet? Quelle est la structure des répertoires et les fichiers à l'intérieur?
Jacek Laskowski
C'est juste vide. J'ai dû le mettre en caisse "main / scala / src" à la main. Mais je peux vivre avec ça.
ses
Vous pouvez utiliser github.com/n8han/giter8 pour démarrer un projet sbt. sbt peut avoir un répertoire vide comme projet principal et main / scala / src n'est pas nécessaire - placez simplement vos fichiers Scala dans le répertoire principal pour que sbt les choisisse.
Jacek Laskowski
5

Pour sbt 0.7

Voir la réponse ailleurs sur cette page .

Pour sbt 0.10

Clonez et construisez l'idée sbt d'Ismael:

git clone https://github.com/ijuma/sbt-idea.git
cd sbt-idea
git checkout sbt-0.10
./sbt package

Créez un répertoire lib du plugin sbt si vous n'en avez pas déjà

mkdir -p  ~/.sbt/plugins/lib

Copiez le pot intégré à la première étape ici

cp sbt-idea/target/scala-2.8.1.final/*.jar ~/.sbt/plugins/lib

Redémarrez ou rechargez sbt, puis vous pouvez exécuter gen-idea(ou gen-idea with-classifierssi vous voulez aussi des sources et javadoc dans intelliJ)

Source: suggestion des Tackers sur le groupe de messages .

Dans IntelliJ IDEA 13.x lui-même

Aujourd'hui, vous pouvez ouvrir un projet basé sur SBT dans IDEA. Il créera le projet et les modules nécessaires et maintiendra vos dépendances à jour chaque fois que vous apporterez des modifications aux scripts de construction.

opyate
la source
2

Je viens de traverser toute cette douleur. Je passe des jours à essayer de créer un environnement acceptable et j'en suis venu à la conclusion qu'ENSIME, SBT et JRebel vont être mon environnement de développement pendant un certain temps. Oui, cela revient à Emacs, mais ENSIME le transforme en un peu ou une idée avec refactoring, support de débogage, navigation, etc. mieux que nous ayons.

Tant que les environnements de développement Scala ne seront pas à la hauteur (Eclipse ou IntelliJ), je ne vais pas me déranger. Ils sont juste trop bogués.

Voir la discussion sur le site de l'ascenseur.

http://groups.google.com/group/liftweb/browse_thread/thread/6e38ae7396575052#

Dans ce fil, il y a un lien vers un HOWTO pour IntelliJ, mais bien que cela fonctionne un peu, il y a beaucoup de problèmes qui le rendent un peu moins utile.

http://blog.morroni.com/2010/07/14/setup-intellij-9-for-lift-framework-development/comment-page-1/

andyczerwonka
la source
Je l'ai déjà lu. Cet article utilise maven, que j'ai réussi à faire fonctionner. J'essaye de faire la même chose maintenant, juste avec sbt, sans maven.
ksemeks
Je peux configurer le projet pour qu'IntelliJ l'utilise, mais je n'arrive pas à faire fonctionner le compilateur / lanceur sbt.
ksemeks
En ce qui concerne ENSIME: est-il facile de se mettre au travail? J'ai essayé une fois, mais je n'ai jamais travaillé avec emacs, donc c'était un peu difficile pour moi. est-ce que travailler avec emacs est une prémisse?
ksemeks
Le lien suivant vous mènera à travers une configuration SBT. Cela a fonctionné pour moi, mais encore une fois travailler avec SBT et IntelliJ de manière non intégrée, c'est vraiment comme utiliser deux outils séparés, ce qui ENSIME avec SBT est beaucoup plus naturel. heikoseeberger.blogspot.com/2010/08/…
andyczerwonka
2

Les réponses sont anciennes pour 2014. Dans IntelliJ 13.x , le plugin Scala est la version 0.41.2 (SBT est inclus).

Ma version SBT est 0.13.5 (borne: sbt sbtVersion)

Allez dans le dossier racine du projet et entrez dans le terminal

sbt idea

Vous verrez deux nouveaux dossiers cachés .idea et .idea_modules .

Puis dans IntelliJ, Fichier> Ouvrir> sélectionnez le projet. Il devrait ouvrir le projet sans aucun problème.

Raymond Chenon
la source