• # Mon expérience à deux balles

    Posté par (site web personnel) . En réponse au journal Un petit tour des systèmes de build. Évalué à 5.

    Ouep, l'enfer des outils de build s'ouvre dès que l'on veut construire un logiciel destiné à plusieurs plate-formes d'exécution. Il y a eu des langages mutli plate-formes qui ont été développées (Lisp, Smalltalk, Java, ...) pour éviter, entre autre, ce genre de problèmes, mais ça n'a jamais vraiment marché parce qu'il y a toujours une plate-forme, le vent en poupe, qui ne joue pas leur jeu. Ou alors ça ne rempli pas les contraintes du logiciel (le plus souvent la performance) sur une ou plusieurs plate-formes cibles (mais ce critère relève peu ou prou aussi du premier, à savoir de jouer le jeu ; voir l'exemple raté des machines Lisp).

    Dans mon cas, après avoir développé en C++ jusqu'en 2003 où on utilisait massivement des Makefiles, je me suis mis à Java jusqu'à encore aujourd'hui. Au début, on utilisait Ant (qui, comme tu l'as si bien écris, est du Makefile en XML). Maintenant on utilise Maven et bien que non exempte de défauts, je trouve que c'est un outil formidable surtout sur des gros, très gros projets ou lorsque les projets sont composés de plusieurs langages et ressources (Java, Groovy, Javascript, CSS, ...). On utilise aussi du Gradle mais là c'est plus comme base pour concevoir des installateurs et configurateurs d'applications sur serveurs que comme système de build. A côté de ça je fais aussi un peu d'Haskell. Ce dernier a son propre outil de build (pardon ses propres outils de build) et ce n'est pas plus mal (j'adore slack). Les pires systèmes de build que j'ai pu utiliser restent quand même ceux du monde Javascript ... Le meilleur que j'ai trouvé est celui du monde Smalltalk : il n'y en a pas ! Ou plus exactement, comme il ne s'appuie pas sur une approche de programmation et de construction orientée fichier, les problèmes adressés ne sont pas les mêmes et, au regard de ma piètre expérience avec, j'ai m'y suis pris beaucoup moins la tête. Mais je m'égare ...

    Pour répondre à ta question, dans mon ancienne boite, j'ai vu des équipes qui développaient des projets multi plate-formes (desktop, mobile Androïd, ...) utiliser Maven comme outil de build centralisé. Par contre, ne m'étant jamais vraiment intéressé à ce problème, je ne leur ai jamais demandé leur retour là dessus. En tout cas, il semble qu'il existe des plugins Maven pour construire des projets iOS : j'ai trouvé ça https://github.com/letsdev/maven-ios-plugin