146 votes

Comment créer un projet SBT avec IntelliJ Idea?

Je viens de commencé avec Scala/LiftWeb/Sbt en développement, et je voudrais importer un Sbt projet dans IntelliJ Idea. En fait, j'ai réussi à importer mon projet de deux façons différentes:

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

2) avec Eclipse. Donc, j'ai créé un nouveau Sbt projet (avec un petit script que j'ai écrit, la configuration de la Sbt projet WebProject). J'ai ensuite utilisé le sbt-eclipsify plugin pour "convertir" le projet pour Eclipse, que j'ai ensuite importé dans IntelliJ (source existant -> eclipse). Mais les problèmes ont commencé ici: je n'arrive pas à IntelliJ Sbt plugin fonctionne.

Quelqu'un peut-il m'aider?

170voto

Steve Gury Points 5825

Il existe deux façons de créer un projet - utilisation de sbt plugin pour générer IntelliJ projet, ou d'utiliser l'Ide Scala plugin pour créer sbt projet. Caractéristiques de base de travail hors de la boîte, en utilisant à la fois des solutions, certaines des créations complexes peuvent avoir des problèmes, alors essayez autre outil pour voir si ça fonctionne.

IntelliJ Plugin Scala

IntelliJ plugin peut être trouvé ici http://confluence.jetbrains.com/display/SCA/Scala+le Plugin+pour+Ide+IDÉE ou peut être installé directoly de l'intérieur de l'IDE à l'aide de Paramètres -> Plugins boîte de dialogue. Par la suite, on peut juste faire Fichier -> Nouveau Projet -> Scala -> SBT base. IntelliJ va générer de génération de base.sbt, télécharger les dépendances et ouvrir un projet.

SBT Plugin

Sbt plugin qui génèrent une idée de projet basée sur la sbt fichiers peuvent être trouvés ici: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ & 13.0+

Ajoutez simplement addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2") votre build.sbt; aucun autre résolveurs sont nécessaires.

Anciennes Versions:

SBT 0.11+

Créer et ajouter les lignes suivantes en ~/.sbt/plugins/build.sbt OU PROJECT_DIR/project/plugins.sbt

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

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

Utiliser gen-idea dans sbt IDÉE de créer des fichiers de projet.

Par défaut, les classificateurs (c'est à dire les sources et la documentation javadoc) de sbt et dépendances de la bibliothèque sont chargés si trouvé et références à ajouter à l'IDÉE de fichiers de projet. Si vous ne voulez pas télécharger/référence, utilisez la commande" gen-idea no-classifiers no-sbt-classifiers.


SBT 0.10.1 l'a (d'après l'auteur du plugin, 0.10.0 de ne pas travailler!!!)

Créer et ajouter les lignes suivantes dans ~/.sbt/plugins/build.sbt:

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

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

Utiliser gen-idea sbt tâche pour créer l'IDÉE de fichiers de projet.

Par défaut, les classificateurs (c'est à dire les sources et la documentation javadoc) de sbt et dépendances de la bibliothèque sont chargés si trouvé et références à ajouter à l'IDÉE de fichiers de projet. Si vous ne voulez pas télécharger/référence, utilisez la commande" gen-idea no-classifiers no-sbt-classifiers.


SBT 0.7

Pour l'utiliser, il suffit de l'exécuter à partir de votre sbt shell, il va utiliser le plugin comme un 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 de votre définition du 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)
   // ...
}

11voto

Synesso Points 8865

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

  1. Créer le projet avec SBT
  2. Créer une nouvelle IDÉE de Projet avec le même chemin d'accès racine
  3. Créer un module avec le même chemin d'accès racine
  4. Définir src/main/scala comme un src chemin d'accès du module
  5. Définir src/test/scala comme un test de chemin sur le module
  6. Ajouter scala-library.jar comme une bibliothèque
  7. Ajouter lib (si elle est présente) comme un pot de répertoire dans un module de la bibliothèque
  8. Ajouter lib_managed/compilation (si elle est présente) comme un pot de répertoire dans un module de la bibliothèque
  9. Ajouter lib_managed/test (si elle est présente) comme un pot de répertoire dans un module de la bibliothèque

C'est à partir de la mémoire. Il serait mieux si elle était automatisé, mais c'est pas grave, comme il est maintenant.

Une note de prudence: L'approche ci-dessus ne fonctionne pas bien avec le nouveau-école sbt, c'est à dire des versions à 0,10 $ et plus récent, car il ne copie pas les dépendances dans lib_managed par défaut. Vous pouvez ajouter

retrieveManaged := true

pour votre construction.sbt à faire copier les dépendances dans lib_managed.

7voto

Jacek Laskowski Points 6668

Pour la version de sbt 0.12.4 à l'échelle du système fichier de configuration du plugin - ~/.sbt/plugins/build.sbt ou PROJECT_DIR/project/plugins.sbt - faut-il 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")

Exécutez sbt gen-idea pour générer de l'IDÉE de projet fichiers.

Lire la sbt l'idée de plugin site web pour plus up-to-date information. Vous pouvez également trouver mon entrée de blog de l'Importation de sbt-projet de IntelliJ IDEA 13 (avec sbt-idée, Scala 2.11 et sbt 0.12) utile.

5voto

opyate Points 3607

Pour sbt 0.7

Voir la réponse ailleurs sur cette page.

Pour sbt 0.10

Clone et construire Ismael du sbt-idée:

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

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

mkdir -p  ~/.sbt/plugins/lib

Copier le jar construit dans la première étape ici

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

Redémarrer ou de recharger sbt, puis vous pouvez exécuter gen-idea (ou gen-idea with-classifiers si vous voulez des sources et de la javadoc dans intelliJ trop)

Source: Agrafer " suggestion sur le message de groupe de.

Dans IntelliJ IDEA 13.x lui-même

Vous pouvez ouvrir un SBT projet dans l'IDÉE de nos jours. Il permettra de créer un projet et de modules, et de garder vos dépendances à jour chaque fois que vous apportez des modifications dans les scripts de construction.

2voto

andyczerwonka Points 1750

Je suis juste allé à travers toute cette douleur. J'ai passer des jours à essayer d'obtenir un environnement agréable et en sont venus à la conclusion que ENSIME, SBT et JRebel sont va être mon environnement de développement pour un certain temps. Oui, il va revenir à Emacs, mais ENSIME en fait un peu une idée de refactoring, prise en charge du débogage, la navigation, etc. Il n'est pas loin d'être aussi bon que Eclipse (Java), mais à moins que la scala plugins fonctionnent mieux c'est la meilleure que nous avons.

Jusqu'à la Scala environnements de développement d'obtenir jusqu'à priser (Eclipse ou IntelliJ) je ne vais pas la peine. Ils sont tout simplement trop buggé.

Voir la discussion sur l'ascenseur du site.

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

Dans ce thread, il y a un lien vers un tutoriel pour IntelliJ, mais bien que ça fonctionne, il y a de nombreux problèmes qui la rendent un peu moins utile.

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

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