Comment gérer plusieurs modules interdépendants avec SBT et IntelliJ IDEA?

Je suis le développement de plusieurs modules avec des dépendances entre eux, et voudrais travailler avec eux tous ensemble dans une IDÉE de projet. Je suis en utilisant sbt-idée pour générer IDÉE projets de la sbt les définitions de build, qui fonctionne très bien pour des projets individuels. Dans le module multiple cas, cependant, les choses que j'ai essayé jusqu'à présent n'a pas assez de travail:

Utilisation sbt-idée de générer une IDÉE .iml fichier pour chaque module indépendamment; puis créer une IDÉE de projet à partir de zéro un ajouter ces modules à elle. Cela rend le module de sources modifiables dans la même fenêtre, mais les dépendances entre eux ne sont pas suivies (et donc essayer de naviguer à partir d'une source au sein de la foo projet pour quelque chose dans bar me prend importées version de la bibliothèque de bar, pas les sources locales).

Utilisation sbt multi-projet s'appuie (aka sous-projets), où le parent du projet de construction.scala contient des choses comme:

lazy val foo = Project(id = "foo", base = file("foo"))
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo)

Cela fonctionne presque, dans ce sbt-idée génère un maître IDÉE de projet avec les dépendances entre les sous-projets suivis. Il y a cependant deux bémols:

  1. Il semble être un tas de restriction que le sous-projets doivent vivre dans des sous-répertoires du projet maître (c'est à dire, file("../foo") n'est pas autorisé). Ce n'est pas vraiment ce que je veux (ce que si un module, comme une "utils" ou "communes" paquet-est utilisé dans deux projets principaux?) mais je peux vivre avec ça.
  2. Un de mes sous-projets a son propre sous-projets; je ne suis pas sûr de savoir si sbt s'occupe elle-même avec ce nid de projets correctement, mais en tout cas, ils sont ignorés par sbt-idée. Évidemment, j'ai besoin de sous-projets imbriqués pour être inclus de façon récursive dans le projet de master.

Pour résumer: je voudrais récupérer des modules qui peut déjà avoir des sous-projets dans une grande IDÉE de projet avec les dépendances pour la pratique de l'édition. Comment puis-je le faire? Merci!

  • Essayez de définir un méta-projet que les liens vers les autres comme externe références du projet (github.com/harrah/xsbt/wiki/Full-Configuration). Je n'ai pas essayé moi-même avec sbt-idée, c'est donc un commentaire plutôt qu'une réponse.
  • Merci pour l'idée, mais malheureusement sbt-idée ignore les références externes entièrement.
  • Peut-être que cela vous aidera dans la prochaine version de sbt-idée: github.com/mpeltonen/sbt-idea/commit/9f17cc8 github.com/mpeltonen/sbt-idea/commit/4b4adf75
  • Cool, j'ai donc installé svn-idée à partir de la dernière git sources de tirer dans les modifications, puis nettoyé les projets et a couru sbt-idée de nouveau. Il y avait un peu bizarre de la résolution des dépendances des questions que je ne comprends pas tout, mais de toute façon j'ai fini avec un projet de travail! J'ai eu à régler manuellement la source dirs dans l'IDÉE de la sous-sous-sous-projets; et, rétrospectivement, je ne suis pas sûr que je ne pouvais pas l'avoir fait qu'en premier lieu, le stock sbt-idée 11.1. En tout cas, merci, je pense que je peux arrêter de raser ce yak pour l'instant.
  • Après avoir écrit le dernier commentaire que j'ai constaté que je n'avais pas un projet de travail, après tout (encore une fois, des problèmes avec les sous-sous-sous-projets). Donc je me suis séparé de ceux que les premiers projets de classe, de sorte que mon projet de maîtrise a maintenant qu'un seul niveau de sous-projets ci-dessous il. Bien sûr, je ne pouvais le faire parce que c'est tout mon propre code pour commencer.
  • Si vous avez trouvé une solution, pouvez-vous s'il vous plaît poster une réponse?
  • Je le ferais si je le pouvais, mais malheureusement je ne connais pas de solution à la question d'origine. La meilleure solution que j'ai trouvé est d'éviter l'imbrication des projets à plusieurs niveaux de profondeur. Si il y a juste un projet principal et un ensemble de projets enfants, avec des dépendances spécifié entre eux par l'intermédiaire de "dependsOn" dans le maître Construire.scala, puis en exécutant sbt-idée sur le projet principal produit d'un travail multi-module Idée de projet.