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:
- utiliser mon propre éditeur de 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.
- 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é de la période allant de 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).
- construire personnalisation je peux utiliser la "nuit" 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). - 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 pour elle. Il semble assez rapide, je ne suis pas sûr de ce genre de bocal de mise en cache Maven n'. 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...
- La question devrait être changé en "Quel est le meilleur Scala système de construction [de ces exigences inhérentes]". Les critères de vous donner l'sonnant question très spécifique à vos préférences individuelles. Je suppose que mon seul reproche est que vous êtes assis sur le meilleur titre de l'objectif général de la question. Heureusement, certaines réponses sont à usage général.
- Parce que c'est une "quelle est la meilleure..." question, pourriez-vous ajouter le [subjectif] tag? Ne pas essayer d'être con, honnête 😉
- ajouté subjective de la balise. dans re. "Quel est le meilleur Scala système de construction [de ces exigences inhérentes]" -- je ne pense pas que ces derniers sont étroites exigences. Tout bon système de construction doit être rapide, modulaire (indépendant de IDEs si nécessaire), et permettre à tout sous-jacents aux options à utiliser (dans ce cas pour le compilateur Scala). L'ajout de critères permet de s'assurer intervenants d'examiner les caractéristiques importantes, par rapport à ce qui suggère le plus simple compilateur qui se passe à travailler pour eux.
Vous devez vous connecter pour publier un commentaire.
Points 2 et 4 sont extrêmement difficile à 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, c'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 là-bas. 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 des mon GitHub dépôts pour des exemples. Bonne chance!
Avez-vous regardé Intellij IDEA et son 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.
Suis aussi très frustré avec la scala de plugin sous Eclipse et je peux ajouter un peu plus de problèmes à la liste:
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!
Si vous utilisez Emacs, je pense que Ensime est une assez bonne IDE. Je pense qu'à l'époque de l'écriture, Ensime est le seul IDE qui vous donnera la rapidité et la précision de l'auto-complétion sur les deux Scala et Java objets, y compris les conversions implicites.
Il y a le code de prise en charge de navigation à l'aide de barre rapide, les modèles de code à l'aide de l'excellent Yasnippet, et la complétion de code de menu à l'aide de la saisie semi-automatique. Ces sont tous très moderne, activement maintenu Emacs paquets. Il y a aussi à l'extérieur de la zone de construction incrémentale de support de Maven et SBT.
Il ya beaucoup plus là-dedans comme le débogage interactif, refactoring, et de la Scala interprète à un niveau inférieur de processus. Toutes les choses que vous voulez dans un IDE moderne pour Scala est déjà là, dans Ensime. Fortement recommandé pour les Emacsens.
Pour des raisons d'exhaustivité, je dois dire qu'il y a aussi Pantalon -- 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 qui est calquée sur 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 un alternative pour vous?
Je suis allé sur la même route, et c'est là où j'en suis:
- Après quelques enquête initiale, j'ai laissé tomber Kate. J'adore l'utiliser pour la plupart des choses, mais quand il s'agit de choses comme la définition de l'onglet compléments, j'ai trouvé ça manque cruellement. Je vous recommande de regarder dans gedit au lieu de cela, ce qui est beaucoup plus robuste pour la Scala de développement
- Avec gedit que mon éditeur, j'utilise SBT et avons trouvé pour être un excellent outil de construction. Je peut le mettre dans une sorte de "test" mode où lors de tout changement de code, il recompile les fichiers concernés et les pistes de mon test de suite. Cela a été un moyen extrêmement efficace de travailler.
Je n'ai pas pris un coup d'oeil à Buildr encore. Je tiens à dire que je le ferai, mais honnêtement, avec SBT à ma disposition, je n'ai pas un besoin impérieux de regarder un autre outil de construction.
Si vous souhaitez utiliser Eclipse, mais construire le projet à l'aide de sbt, et encore être en mesure de les déboguer, jetez un oeil à ce post ici:
zikaprog.wordpress.com/2010/04/19/scala-eclipse-sbt-and-debugging/
Il peut également être appliqué à des constructeurs autres que sbt.
La dernière version de Maven plugin Scala prend en charge Zinc/Nailgun pour accélérer les temps de démarrage et plus rapide des versions. Voir Le Zinc et la Compilation Incrémentale.