50 votes

Quelle est la meilleure Scala système de construction?

J'ai vu des questions au sujet de l'IDE est par ici -- Qui est le meilleur IDE pour la Scala de développement? et Quel est l'état actuel de l'outillage de Scala?, mais j'ai eu des expériences avec des IDEs. Maintenant, je suis à l'aide de l'IDE Eclipse avec l'automatique de l'espace de travail de l'option d'actualisation, et KDE 4 est Kate comme mon éditeur de texte. Voici quelques-uns des problèmes que j'aimerais résoudre:

  1. utiliser mon propre éditeur IDEs sont vraiment adapté à tout le monde à l'aide de leurs composants. J'aime Kate mieux, mais l'actualisation du système est très ennuyeux (il n'utilise pas de inotify, plutôt, peut-être une 10s intervalle d'interrogation). La raison pour laquelle je ne pas utiliser l'éditeur de texte intégré est parce que cassé l'auto-complétion de fonctionnalités cause de l'IDE à accrocher, peut-être, 10s.
  2. reconstruire uniquement les fichiers modifiés L'Éclipse de construction du système est cassé. Il ne sait pas quand pour reconstruire les classes. Je me retrouve presque la moitié du temps à aller dans projet->nettoyer. Pire, il semble même après qu'il a fini de construire mon projet, quelques minutes plus tard, il apparaîtra avec une étrange erreur (modifier - ces erreurs semblent être des choses qui ont été déjà résolu avec un projet > propre, mais ensuite revenir...). Enfin, la création de "Préférences / Continuer lancement si le projet contient des erreurs" à "invite" ne semble pas avoir d'effet pour la Scala de projets (c'est à dire qu'il démarre toujours même si il y a des erreurs).
  3. construire la personnalisation , je peux utiliser les "nightly" de presse, mais je vais vous voulez modifier et utiliser mon propre Scala construit, pas le compilateur qui est intégré à l'IDE du plugin. Il serait également agréable de passer [par exemple] -Xprint:jvm pour le compilateur (pour imprimer abaissé code).
  4. rapide de la compilation Si Eclipse ne permet pas toujours de construire droite, il semble bien, même plus que fsc.

J'ai regardé Ant et Maven, même si n'avez pas occupé, soit encore (je vais aussi besoin de passer du temps à résoudre les #3 et #4). Je voulais voir si quelqu'un a d'autres suggestions avant que je passe de temps à obtenir un sous-optimale de construction du système de travail. Merci à l'avance!

Mise à JOUR - je suis maintenant à l'aide de Maven, le passage d'un projet comme un compilateur plugin. Il semble assez rapide, je ne suis pas sûr de ce genre de bocal de mise en cache de Maven. Un référentiel en cours pour Scala 2.8.0 est disponible [lien]. Les archétypes sont très cool, et support multi-plateforme semble très bonne. Cependant, à propos de la compilation des questions, je ne suis pas sûr si le fsc est réellement fixe, ou mon projet est assez stable (par exemple, les noms de classe ne sont pas changer) -- l'exécutant manuellement ne me dérange pas autant. Si vous souhaitez voir un exemple, n'hésitez pas à parcourir le pom.xml les fichiers que j'utilise [github].

Mise à JOUR 2 - à partir de repères que j'ai vu, Daniel Spiewak est juste que buildr est plus rapide que Maven (et, si l'on est en train de faire des changements progressifs, Maven 10 seconde de latence est ennuyeux), donc si on peut fabriquer un compatible fichier build, alors il est probablement en vaut la peine...

34voto

Daniel Spiewak Points 30706

Les Points 2 et 4 sont extrêmement difficiles à gérer avec le courant scalac. Le problème est que la Scala de compilateur est un peu stupide sur la création des fichiers. Fondamentalement, il va construire tout ce que vous nourrir, indépendamment de si oui ou non ce fichier a vraiment besoin d'être construit. Scala 2.8.0 aura une énorme amélioration à cet égard, mais jusqu'alors... Eclipse SDT a vraiment des très complexe (et très hackish) code pour le faire changer de détection et de suivi des dépendances. Dans l'ensemble, il fait un travail décent, mais comme vous l'avez vu, il y a des rides. Eclipse SDT 2.8.0 va s'appuyer sur les améliorations susmentionnées à scalac lui-même.

Donc, bâtiment uniquement les fichiers modifiés est à peu près hors de question. Côté de la TAD, le seul outil que je connais qui essaie même c'est SBT (Simple Outil de construction). Il utilise un compilateur plugin pour suivre les fichiers tels qu'ils sont compilés et d'interroger le graphe de dépendance est calculé par le compilateur lui-même. Dans la pratique, cela donne environ une amélioration de 50% au cours de la recompilation du monde approche. Encore une fois, c'est un hack pour contourner les carences en pré-2.8.0 scalac.

La bonne nouvelle est que raisonnablement rapide compilation est encore réalisable même sans se soucier de la détection de changement. FSC utilise la même technologie (ooh, qui sonnait si "Charlie Eppes") qui Éclipse le TSD utilise pour mettre en œuvre rapide compilation incrémentielle. En bref, c'est assez accrocheur.

Personnellement, j'utilise Apache Buildr. Sa configuration est nettement plus propre que soit Maven ou SBT et de son temps de démarrage est un ordre de grandeur de moins (lors de l'exécution en vertu de l'IRM). Il s'intègre avec le FSC et les tentatives de certains de base de la détection de changement sur son propre (assez primitif). Il a aussi l'auto-magique de soutien pour les principaux Scala de frameworks de test (ScalaTest, ScalaCheck et Spécifications) ainsi qu'un soutien pour la commune de compilation avec des sources Java IDE et méta génération pour l'Ide Eclipse. Oh, et il prend en charge tous Maven caractéristiques (résolution des dépendances, etc) et puis certains. Je suis à même de travailler sur une extension qui permettrait de shell interactif de soutien intégré avec JavaRebel et au soutien de plusieurs fournisseurs de shell (Scala, JIRB, Clojure REPL, etc). Il n'est pas prêt pour le SVN, mais je vais commettre une fois que c'est prêt (éventuellement dans le temps pour 1.3.5).

Comme vous pouvez le voir, je suis fermement d'avis que Buildr est le meilleur Scala outil de construction. Sa documentation est un peu inégale où la Scala est concerné, mais c'est parce que tout est tellement simple qu'il est difficile de document sans sentiment détaillé. Vous pouvez toujours consulter l'un de mes dépôts GitHub pour des exemples. Bonne chance!

6voto

Brian Agnew Points 143181

Avez-vous regardé Intellij IDEA et ses Scala intégration ? L'ide a un loyal (fanatique?) parmi les développeurs Java, de sorte que vous pouvez trouver ce qui est approprié pour vos besoins.

4voto

dberesford Points 61

Suis aussi très frustré avec la scala de plugin sous Eclipse et je peux ajouter un peu plus de problèmes à la liste:

  • l'auto-complétion ne fonctionne que de temps en temps
  • le débogueur ne fonctionne pas correctement (surtout si vous essayez de déboguer scala xml)
  • le débogueur oublie des points d'arrêt
  • "aller à la définition de" ne fonctionne pas plus souvent que les autres.

Je suis heureux d'entendre que Buildr sonne comme une meilleure alternative (sur l'avant de toute façon), je vais vous donner que d'essayer merci!

4voto

om-nom-nom Points 33691

Pour des raisons d'exhaustivité, je dois dire qu'il y a aussi des Pantalons -- l'outil de construction que dans l'utilisation de Twitter (l'un des premiers scala adoptants)

La principale différence qu'il est destiné non seulement à la scala (et écrit en python, par la voie) et s'inspire de google système de construction.

Il n'est pas si lourd que sbt, donc pour le freshmans c'est beaucoup plus simple, mais je n'ai jamais entendu parler du Pantalon de l'utilisation en dehors de twitter et foursquare.

Si vous avez peur de SBT, peut-être un autre pas de plus populaire outil de construction, ABT, pourrait être une alternative pour vous?

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